在 CSDN 上以前看到过好几篇说如何让程序只运行一个实例。虽然方法有很多,但是,都很麻烦。
.NET Framework 从 1.1 起就提供了一个 Mutex (互斥体) 的类 (System.Threading)。CSDN 的帖子上也多推荐用它来做。但是有的代码让人很费解,很长。下面是我写的一个方法,代码不超过 15 行。下面的变量和方法定义都在 Program.cs 里。这个文件包含 Main 入口函数,是整个程序的入口。

定义一个静态互斥体:static Mutex InstanceMutex

定义一个静态判断方法。用来判断这个互斥体是否已在系统中存在:
}

在 Main 函数中判断是否有实例已经运行,如果没有,则运行:
如何让程序只运行一个实例[STAThread]
}

我用这个方法还没有出现什么问题,如果有问题请留言。

相关文章: