C#实现只能运行程序的一个实例(添加在窗体的Load事件中)
1. 根据进行名限制只能运行程序的一个实例
System.Diagnostics.Process process = System.Diagnostics.Process.GetCurrentProcess(); System.Diagnostics.Process[] processList = System.Diagnostics.Process.GetProcessesByName(process.ProcessName); if ( processList.Length != 1 ) { System.Windows.Forms.MessageBox.Show("This computer already have one program running.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); Application.Exit(); return; }
2. 根据进行名限制只能运行一个实例的另外一种写法
string modelName = Process.GetCurrentProcess().MainModule.ModuleName; string processName = System.IO.Path.GetFileNameWithoutExtension(modelName); Process[] processes = Process.GetProcessesByName(processName);//根据进程名创建进程资源数组 if ( processes.Length > 1 ) { MessageBox.Show("该程序已经在运行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); this.Close(); }
3. 使用互斥量Mutex实现只能运行程序的一个实例
bool exit; System.Threading.Mutex newMutex = new System.Threading.Mutex(true, "仅一次", out exit); if ( exit ) { newMutex.ReleaseMutex();//释放互斥量,可以运行新窗体 } else { MessageBox.Show("本程序已经有一个实例在运行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); this.Close(); }
转载于:https://blog.51cto.com/020618/1654763