System.Threading (mscorlib.dll)sealed class

This class defines a lock that allows multiple readers, but only one writer. A thread can acquire a lock by calling AcquireReaderLock( ) or AcquireWriterLock( ). ReleaseReaderLock( ) and ReleaseWriterLock( ) release the specific locks. Calling ReleaseReaderLock( ) on a writer lock releases both the writer lock and the reader lock. However, calling ReleaseWriterLock( ) on a reader lock throws a System.ApplicationException.

ReleaseLock( ) causes any lock to be released, but it returns a LockCookie, which represents the type of lock that RestoreLock can use to obtain the same lock. UpgradeToWriterLock( ) upgrades a reader lock to a writer lock, and returns a LockCookie representing the original reader lock. Pass that cookie to DowngradeDromWriterLock( ) to restore the original reader lock.

public sealed class ReaderWriterLock {
// Public Constructors
   public ReaderWriterLock( );
// Public Instance Properties
   public bool IsReaderLockHeld{get; }
   public bool IsWriterLockHeld{get; }
   public int WriterSeqNum{get; }
// Public Instance Methods
   public void AcquireReaderLock(int millisecondsTimeout);
   public void AcquireReaderLock(TimeSpan timeout);
   public void AcquireWriterLock(int millisecondsTimeout);
   public void AcquireWriterLock(TimeSpan timeout);
   public bool AnyWritersSince(int seqNum);
   public void DowngradeFromWriterLock(ref LockCookie lockCookie);
   public LockCookie ReleaseLock( );
   public void ReleaseReaderLock( );
   public void ReleaseWriterLock( );
   public void RestoreLock(ref LockCookie lockCookie);
   public LockCookie UpgradeToWriterLock(int millisecondsTimeout);
   public LockCookie UpgradeToWriterLock(TimeSpan timeout);

    Part II: Programming with the .NET Framework
    Part IV: API Quick Reference
    Chapter 26. System