Export (0) Print
Expand All

ReaderWriterLock.ReleaseReaderLock Method

Decrements the lock count.

Namespace:  System.Threading
Assembly:  mscorlib (in mscorlib.dll)

public void ReleaseReaderLock()

ExceptionCondition
ApplicationException

The thread does not have any reader or writer locks.

ReleaseReaderLock decrements the lock count. When the count reaches zero, the lock is released.

NoteNote

If a thread has the writer lock, calling ReleaseReaderLock has the same effect as calling ReleaseWriterLock. If a thread has no locks, calling ReleaseReaderLock throws an ApplicationException.

The following code example shows how to acquire and release a reader lock, and how to handle the exception thrown when a request times out.

This code is part of a larger example provided for the ReaderWriterLock class.

// The complete code is located in the ReaderWriterLock 
// class topic. 
using System;
using System.Threading;

public class Test
{
    // Declaring the ReaderWriterLock at the class level 
    // makes it visible to all threads. 
    static ReaderWriterLock rwl = new ReaderWriterLock();
    // For this example, the shared resource protected by the 
    // ReaderWriterLock is just an integer. 
    static int resource = 0;


...


// Shows how to request and release a reader lock, and 
// how to handle time-outs. 
static void ReadFromResource(int timeOut)
{
    try
    {
        rwl.AcquireReaderLock(timeOut);
        try
        {
            // It is safe for this thread to read from 
            // the shared resource.
            Display("reads resource value " + resource); 
            Interlocked.Increment(ref reads);
        }        
        finally
        {
            // Ensure that the lock is released.
            rwl.ReleaseReaderLock();
        }
    }
    catch (ApplicationException)
    {
        // The reader lock request timed out.
        Interlocked.Increment(ref readerTimeouts);
    }
}


...


}

.NET Framework

Supported in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Show:
© 2014 Microsoft