释放互斥锁时的例外情况.什么可能导致这个?

Has*_*niH 5 c# synchronization mutex

我在以下代码中释放互斥锁时收到以下异常"从非同步代码块调用对象同步方法":

int count = 0;
try
{
     mutex.WaitOne();
     count = requests_sent.Count;
}
catch
{
}
finally
{
     mutex.ReleaseMutex();
}
Run Code Online (Sandbox Code Playgroud)

requests_sent是其他线程正在访问(读/写)的字典,但我不知道为什么这段代码会抛出异常.有人有主意吗?

Han*_*ant 8

将WaitOne()调用移到try块上方.您只想在知道获取互斥锁时释放互斥锁.

您现在也有机会获得更好的诊断.

  • **ReleaseMutex** 会引发异常的唯一情况是 **WaitOne** 会引发异常。因此,如果将其移到 try 块之外,您将从 **WaitOne** 方法中得到一个未捕获的异常 (2认同)