使用进程列举的方式,实现单个实例的WinForm
[STAThread]
static void Main()
... {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//在这里可以修改为需要的进程名称。
if (!HasInstance("SingleInstance"))
...{
Application.Run(new Form1());
}
else
...{
MessageBox.Show("Exist one Instance");
Application.Exit();
}
}
// 使用进程列举,看看是否已经存在相同名称的进程
private static bool HasInstance( string name)
... {
Process[] prces = Process.GetProcesses();
int count = 0;
foreach (Process pro in prces)
...{
if(pro.ProcessName==name)
...{
count++;
}
}
if(count>1)
return true;
else
return false;
}
static void Main()
... {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//在这里可以修改为需要的进程名称。
if (!HasInstance("SingleInstance"))
...{
Application.Run(new Form1());
}
else
...{
MessageBox.Show("Exist one Instance");
Application.Exit();
}
}
// 使用进程列举,看看是否已经存在相同名称的进程
private static bool HasInstance( string name)
... {
Process[] prces = Process.GetProcesses();
int count = 0;
foreach (Process pro in prces)
...{
if(pro.ProcessName==name)
...{
count++;
}
}
if(count>1)
return true;
else
return false;
}