我正在尝试设置一个互斥锁,以防止我的应用程序启动程序可执行文件启动几个相同的进程。我见过几个人使用类似的代码与Application.Run()而不是Process.Start(),其中一个阻止而另一个阻止。我的代码似乎做了应有的事情,但我不明白为什么。应用程序启动程序在下面的代码后不久退出,那么互斥锁是否会被丢弃?
// Prevent multiple application instances by checking our global mutex.
using (var mutex = new Mutex(false, @"Global\" + ApplicationGuid))
{
if (!mutex.WaitOne(0, false))
{
MessageBox.Show("An instance of this application is already running.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
// Start application.
Process.Start(applicationPath);
}