我试图阻止在Windows 8上以C#开头的应用程序的多个副本。
bool isMutexNotExist;
var mutex = new Mutex(true, "name", out isMutexNotExist);
if (!isMutexNotExist)
{
SystemSounds.Beep.Play();
Application.Current.Shutdown();
}
mutex.WaitOne();
GC.KeepAlive(mutex);
此代码在使用.Net 4.5的调试和发布模式(Visual Studio 2013)中的Windows 7(戴尔笔记本电脑)上正常工作,但在Win 8(Microsoft Surface 3)上,它允许另一个副本启动。我找不到任何关于Mutex在Win7& Win8所以我不确定发生了什么。如果没有mutex.WaitOne()
,代码在发布模式下无法在Windows 7上运行。