gpt4 book ai didi

C# Mutex 总是卡在 WaitOne 上

转载 作者:行者123 更新时间:2023-11-30 23:10:17 25 4
gpt4 key购买 nike

我有一个创建互斥锁并立即取得所有权的进程,然后在单击按钮时释放它:

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 也不会继续。

有人知道为什么会这样吗?

最佳答案

我想如果你用 true 创建互斥量 (new Mutex(true, "req_mutex");)因此,您不需要在该过程中调用 WaitOne()

文档说在调用此构造函数重载时最好将 initiallyOwned 指定为 false。 https://msdn.microsoft.com/en-us/library/f55ddskf(v=vs.110).aspx

编辑:啊,你打败了我 :) ...

关于C# Mutex 总是卡在 WaitOne 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45441293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com