C#实现应用程序单个运行,防止重复启动
在开发Windows应用程序时,有时我们希望确保同一时间只有一个实例在运行,防止重复启动。
可以通过检查当前进程的名称来判断是否已经有实例在运行。如果检测到同名的进程已经存在,则提示用户并关闭新启动的实例。
代码实现:
#region 单次运行软件
System.Diagnostics.Process gwr = System.Diagnostics.Process.GetCurrentProcess();
System.Diagnostics.Process[] myProcesses = System.Diagnostics.Process.GetProcessesByName("Demo");
if (myProcesses.Length > 1) // 如果可以获取到指定的进程名大于一个,则说明在此之前已经启动过
{
MessageBox.Show("检测到程序已经运行,请先关闭多余的程序和进程!");
Application.Exit(); // 关闭
}
#endregion
-
System.Diagnostics.Process.GetCurrentProcess(): 获取当前进程的实例。
-
System.Diagnostics.Process.GetProcessesByName("Demo"): 获取所有名为“OpenDoor”的进程。这里的“Demo”应替换为你的应用程序的实际名称。
-
myProcesses.Length > 1: 如果找到的进程数量大于1,说明已经有实例在运行。
-
Application.Exit(): 关闭当前实例,确保只有一个实例在运行。