ref: http://www.jb51.net/article/17747.htm
//在程序的main函数中加入以下代码 bool createdNew; System.Threading.Mutex instance = new System.Threading.Mutex(true, "MutexName", out createdNew); if (createdNew) { Application.Run(new LoginForm()); instance.ReleaseMutex(); } else { Application.Exit(); } //还可以写成以下形式,一个窗体只能启动一次 Form1 a = new Form1(); bool createdNew; System.Threading.Mutex instance = new System.Threading.Mutex(true, "MutexName", out createdNew); if (createdNew) { a.ShowDialog(); instance.ReleaseMutex(); } else { a.Close(); }
private static bool HasRunning() { Process currentProcess = Process.GetCurrentProcess(); Process[] processCollection = Process.GetProcessesByName(currentProcess.ProcessName); foreach (Process p in processCollection) { if (p.Id == currentProcess.Id) //检查ID是否相同 { return true; } } return false; }