实现单实例应用程序的方法比较多,我列举一些常用的方法:
1,使用互斥体:
static void Main()
{
bool isOnlyOne;
System.Threading.Mutex mtx = new System.Threading.Mutex
(false, "OnlyOne", out isOnlyOne);
if (isOnlyOne)
{
Application.Run(new Form1());
}
else
{
MessageBox.Show("当前已经运行本应用程序了,无须再次运行!
}
2,使用Process类来检测是否已经存在本应用程序的进程:
static void Main()
{
bool isOnlyOne;
foreach(process p in Process.GetProcesses())
{
if(p.ProcessName="xxx")
isOnleOne=false;
}
if (isOnlyOne)
{
Application.Run(new Form1());
}
else
{
MessageBox.Show("当前已经运行本应用程序了,无须再次运行!
}
这种方式会导致程序启动缓慢,一般不推荐使用
3,继承WindowsFormsApplicationBase实现单实例管理器,已经有人写过这个主题了,我就不重复了,具体可以参考:
http://hi.baidu.com/hetaoos/blog/item/2abda7185ab63a0334fa415f.html