C#使用Mutex进程互斥体实现程序单实例运行无效的解决方法
Mutex运行之后就被.NET的GC垃圾回收了,所以再次运行程序的时候不会互斥,也就没办法正确验证单实例了。
解决方法:将Mutex对象设置为static,让它存活于程序运行的整个周期即可。
static class Program
{
static Mutex mutex;
///
/// 应用程序的主入口点。
///
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
bool isStartup;
using (Mutex mutex = new Mutex(true, System.Diagnostics.Process.GetCurrentProcess().ProcessName, out isStartup))
{
if (isStartup)
{
Application.Run(new MainForm());
}
}
}