由于ReaderWriterLockSlim
该类使用线程 ID 来查看谁拥有锁,因此在不保证所有方法都将在同一个线程上执行的异步方法中使用它是安全的。
例如。
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
}