This is even worse than the ReaderWriterLock in terms of noise.
If Threading.Monitor.TryEnter(syncRoot) Then
Try
'do something
Finally
Threading.Monitor.Exit(syncRoot)
End Try
Else
'do something else
End If
Both C# and VB solutions are welcome.