gpt4 book ai didi

c# - 互斥量偶尔会失败

转载 作者:太空宇宙 更新时间:2023-11-03 15:26:47 25 4
gpt4 key购买 nike

我正在开发一个全新的应用程序。只有我一个人在用,不可能和别人有争执。然而,即便如此,Mutex 也经常失败。这是我的代码示例。

using (Mutex mutex = new Mutex(false, @"Global\MS_NBR"))
{
System.Diagnostics.Trace.WriteLine("Before " + @"Global\MS_NBR");
if (!mutex.WaitOne(TimeSpan.FromSeconds(30), false))
throw new ArgumentOutOfRangeException();
System.Diagnostics.Trace.WriteLine("After " + @"Global\MS_NBR");
..Here I assign a unique member number.. (runs in a fraction of a second)
mutex.ReleaseMutex();
}

这有时会起作用,但非常频繁地抛出 ArgumentOutOfRangeException,这向我表明它无法在 30 秒内获得 Mutex。

最佳答案

编辑 这部分可能不适用,但我还是会试一试。我从未使用过命名互斥量,而是静态分配的互斥量,而且从未遇到过任何问题。

用这一行:

using (Mutex mutex = ...

您分配一个命名的全局 Mutex 并在 using {} 子句结束时将其释放。

静态定义它可能会有所帮助,相反:

private static Mutex mutex = ...

切勿丢弃它,切勿重新创建它。只要应用程序运行,它就必须只是一个对象。

关于c# - 互斥量偶尔会失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35019925/

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