ReaderWriterLockSlim.CurrentReadCount Property
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Gets the total number of unique threads that have entered the lock in read mode.
public:
property int CurrentReadCount { int get(); };
public int CurrentReadCount { get; }
member this.CurrentReadCount : int
Public ReadOnly Property CurrentReadCount As Integer
Property Value
The number of unique threads that have entered the lock in read mode.
Examples
The following example shows how to use the CurrentReadCount property to generate an event log entry if the number of threads in read mode exceeds a threshold.
using (ReaderWriterLockSlim rwLock = new ReaderWriterLockSlim()) {
Using rwLock As New ReaderWriterLockSlim()
if (!EventLog.SourceExists("MySource"))
{
EventLog.CreateEventSource("MySource", "MyPerformanceLog");
}
EventLog performanceLog = new EventLog();
performanceLog.Source = "MySource";
If Not EventLog.SourceExists("MySource") Then
EventLog.CreateEventSource("MySource", "MyPerformanceLog")
End If
Dim performanceLog As New EventLog()
performanceLog.Source = "MySource"
int readCt = rwLock.CurrentReadCount;
if (readCt > READ_THRESHOLD)
{
performanceLog.WriteEntry(String.Format(
"{0} reader threads; exceeds recommended maximum.", readCt));
}
Dim readCt As Integer = rwLock.CurrentReadCount
If readCt > READ_THRESHOLD Then
performanceLog.WriteEntry(String.Format( _
"{0} reader threads; exceeds recommended maximum.", readCt))
End If
Remarks
A thread is counted only once, even if the lock allows recursion and the thread has entered read mode multiple times.
Use this property only for debugging, profiling, and logging purposes, and not to control the behavior of an algorithm. The results can change as soon as they have been calculated. Therefore, it is not safe to make decisions based on this property.