//在程序的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; }
//预防程序启动多个 bool newMutexCreated = true; using (new Mutex(true, Assembly.GetExecutingAssembly().FullName, out newMutexCreated)) { if (!newMutexCreated) { MessageBox.Show("程序已启动!请不要启动多个程序"); System.Environment.Exit(0); } else { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new frmMain()); } }