Собственно код:
private readonly TimeSpan _defaultTimeout = TimeSpan.FromSeconds(5); // default timeout
private readonly ReaderWriterLockSlim _rwLock = new ReaderWriterLockSlim();
....
public async Task DoSomethingAsync()
{
....
if (this._rwLock.TryEnterWriteLock(this._defaultTimeout)) {
try {
...
await this.DoSomeOtherTaskAsync();
...
finally {
this._rwLock.ExitWriteLock();
}
}
}
Вопрос, почему периодически this._rwLock.ExitWriteLock(); падает с
System.Threading.SynchronizationLockException: The write lock is being released without being held.
at System.Threading.ReaderWriterLockSlim.ExitWriteLock()
других Exception в этот момент не замечено.