【发布时间】:2014-02-11 01:14:44
【问题描述】:
我有一个可以以两种不同方式使用的应用程序,具体取决于我是否将参数传递给 main。使用以下示例代码,我可以:
- 启动多个实例,每个实例都有唯一参数
- 启动一个不带参数的实例
static void Main(string[] args)
{
string mutexName = "";
if (args.Length > 0)
{
mutexName = args[0];
} else
{
mutexName = "NoArgs";
}
using (Mutex appMutex = new Mutex(false, String.Format("{0}-{1}", mutexName, appGuid)))
{
if (!appMutex.WaitOne(0, false))
{
MessageBox.Show("Instance already running");
return;
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
完美运行!但我也希望有参数的应用程序和没有参数的应用程序相互排斥。如..如果打开一个或多个带参数的应用程序,则无法启动一个不带参数的应用程序,反之亦然,如果打开一个不带参数的程序,则无法启动任何带参数的程序。
有人知道我如何做到这一点吗?我用互斥锁尝试了不同的方法,我开始认为这不能用互斥锁来完成。或者我需要“组”互斥锁或其他东西。
【问题讨论】:
标签: c# .net mutex multiple-instances single-instance