gpt4 book ai didi

c# - 使用 Mutex(??) 检查只允许 2 个事件应用程序实例

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

我明白 Mutex can be used只允许我的应用程序的一个实例在一台机器上启动。这意味着无论任意数量的用户使用多少个桌面,最多只能运行一个程序实例。

现在,我不想只允许一个实例,而是最多允许两个,仅此而已。怎么做?我试过这样的代码:

    public static bool MutexChecking()
{

bool createNew1;
// one set of GUID
new Mutex(false, "54A8F2C1-6C11-4ED4-8A62-AD7C1D9F7970", out createNew1);



if (createNew1)
return true;
bool createNew2;
//another set
new Mutex(false, "5E1C76D0-9897-412B-BD56-64A872F8FDE3", out createNew2);

return createNew2;

}

上面的代码工作......有点。它适用于我测试过的所有情况,除了这个:

  1. 打开程序(我们称它为p1)
  2. 再次打开程序(我们称它为p2)
  3. 关闭p1
  4. 第三次打开程序(p3)
  5. 期望:在 p3 期间,上面的方法应该返回一个 true(因为 createNew1 应该是 true),但它返回一个 false(因为 createNew1 返回 false)。

为什么会这样?知道如何解决这个问题吗?

最佳答案

您需要的是信号量,而不是互斥量。互斥量处理互斥,信号量将共享资源的使用限制在最大数量。

关于c# - 使用 Mutex(??) 检查只允许 2 个事件应用程序实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11255728/

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