Так как класс ReaderWriterLockSlim
использует идентификатор потока, чтобы узнать, кому принадлежит блокировка, его безопасно использовать с методами async, где нет никакой гарантии, что весь метод будет выполнен в том же потоке.
Например.
System.Threading.ReaderWriterLockSlim readerwriterlock = new System.Threading.ReaderWriterLockSlim();
private async Task Test()
{
readerwriterlock.EnterWriteLock();
await Task.Yield(); //do work that could yield the task
readerwriterlock.ExitWriteLock(); //potentailly exit the lock on a different thread
}