gpt4 book ai didi

c# - 允许运行两个应用程序实例

转载 作者:行者123 更新时间:2023-11-30 13:15:31 24 4
gpt4 key购买 nike

我了解如何使用互斥量强制应用程序的单个实例,这就是我所使用的。

我的几个用户要求我允许多个实例运行。我不想删除控制代码,因为我认为它会导致灾难,因为多个实例可能正在写入相同的文件、日志等。

如果实例数量限制为两个,我也许可以处理事情。我目前的想法是允许第一个作为事件模式运行,第二个以某种形式的只读模式运行。

那么如何将实例数控制在不超过两个呢?

谢谢

最佳答案

听起来你想要一个命名系统 Semaphore计数为 2。

这是一个例子:

class Program
{
private const int MaxInstanceCount = 2;
private static readonly Semaphore Semaphore = new Semaphore(MaxInstanceCount, MaxInstanceCount, "CanRunTwice");

static void Main(string[] args)
{
if (Semaphore.WaitOne(1000))
{
try
{
Console.WriteLine("Program is running");
Console.ReadLine();
}
finally
{
Semaphore.Release();
}
}
else
{
Console.WriteLine("I cannot run, too many instances are already running");
Console.ReadLine();
}
}
}

一个信号量允许多个并发线程访问一个资源,当它被创建时有一个名字,它是一个操作系统范围的信号量,所以它很适合您的目的。

关于c# - 允许运行两个应用程序实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6984889/

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