【发布时间】:2017-08-01 14:59:01
【问题描述】:
我有一个进程创建互斥体并立即获得所有权,然后当单击一个按钮时,它会释放它:
Mutex req_mutex = new Mutex(true, "req_mutex");
...
req_mutex.WaitOne(); // not required for first click
req_mutex.ReleaseMutex();
另一个进程正在循环并检查互斥体是否存在,当它存在时等待它被释放:
bool waitingForReqMutexCreation = true;
while (waitingForReqMutexCreation)
{
try
{
req_mutex = Mutex.OpenExisting("req_mutex", MutexRights.Synchronize);
waitingForReqMutexCreation = false;
}
catch (WaitHandleCannotBeOpenedException)
{
Thread.Sleep(1000);
}
}
...
req_mutex.WaitOne(); // wait for new request *********** problem here *********
req_mem.readFile(); // read request
req_mutex.ReleaseMutex(); // release req mutex for more requests
问题在于,即使在第一个进程中的按钮应该释放互斥锁之后,WaitOne 也不会继续。
有人知道为什么会这样吗?
【问题讨论】: