Private lockObj As ReaderWriterLockSlim = New ReaderWriterLockSlim()
Public Sub DoSomethingWithReaderWriteLockSlim()
lockObj.EnterReadLock() ' Noncompliant
If IsInitialized() Then
' ..
lockObj.ExitReadLock()
End If
End Sub
End Class
----
=== Compliant solution
[source,vbnet]
----
Class Example
Private obj As Object = New Object()
Public Sub DoSomethingWithMonitor()
SyncLock obj ' is easier to use than explicit Monitor calls
If IsInitialized() Then
End If
End SyncLock
End Sub
Private lockObj As ReaderWriterLockSlim = New ReaderWriterLockSlim()
Public Sub DoSomethingWithReaderWriteLockSlim()
lockObj.EnterReadLock()
Try
If IsInitialized() Then
End If
Finally
lockObj.ExitReadLock()
End Try
End Sub
End Class
----
include::../see.adoc[]
* https://docs.microsoft.com/en-us/dotnet/standard/threading/overview-of-synchronization-primitives#synchronization-of-access-to-a-shared-resource[Synchronization of access to a shared resource].