我正在开发一个旧代码库,它在以下几个地方都有以下代码:
Mutex mutex = new Mutex(false, "<some mutex name>");
mutex.WaitOne();
try {
// do something
} finally {
mutex.ReleaseMutex();
}
这些互斥锁用于进程内同步,因此我使用locks重写了它们,而问题似乎已经消失。
我知道代码并不是最好的代码(与What is a good pattern for using a Global Mutex in C#?相比),但这并不能解释为什么mutex.ReleaseMutex()偶尔抛出“Mutex不归属”。
所以我问上面代码中缺少什么(或者错误)会产生异常?
答案 0 :(得分:2)
这通常意味着尝试释放互斥锁的线程不是创建互斥锁的线程。