标签: c# synchronization mutex
我在以下代码中释放互斥锁时遇到以下异常“从非同步代码块调用对象同步方法”:
int count = 0; try { mutex.WaitOne(); count = requests_sent.Count; } catch { } finally { mutex.ReleaseMutex(); }
答案 0 :(得分:8)
将WaitOne()调用移到try块上方。您只想在知道获取互斥锁时释放互斥锁。
你现在也有机会获得更好的诊断。
答案 1 :(得分:3)
阅读MSDN:
ApplicationException The calling thread does not own the mutex.
WaitOne() 方法可能会抛出异常,而不会获取互斥锁。因此,当您尝试发布它时,您会遇到另一个例外。