SO 周围有很多不同的例子,使用mutex
,Environment.Exit(0)
(控制台应用程序),Application.Exit()
(Win forms)和很多帖子说不要使用process.kill()
。
有人可以解释我如何关闭我的应用程序的其他实例的政治不正确性。它是一个 Windows 窗体应用程序。这似乎在我的本地环境中运行良好,但我担心存在一些我不知道的严重问题。
// I get the current process name and ID
string currentProcName = Process.GetCurrentProcess().ProcessName;
int currentProcID = Process.GetCurrentProcess().Id;
// I then get a list of all process running under this name
Process[] currentProcess = Process.GetProcessesByName(currentProcName);
foreach (Process proc in currentProcess)
{
// if the found process id is using the same name, but not this current id, kill it.
if (proc.Id != currentProcID)
{
proc.Kill(); // Documentation says it imediatly stops the associated process.
proc.Close(); // Documentation says that it frees all resources associated with this component
}
}
根据文档,我认为这是关闭正在运行的应用程序的其他实例的合理方法。如果有的话,有经验的可以指出一些问题吗?除了原子性,我将添加异常处理。