关闭旧的应用程序实例
本文关键字:应用程序 实例 | 更新日期: 2023-09-27 18:06:15
我正在开发一个程序,其中只有一个实例可以运行。我知道我可以应用互斥锁来防止多个实例同时运行。
但是我希望如果一个应用程序的新实例运行,它应该终止旧的实例。可执行文件将始终具有相同的名称。
我已经尝试在表单加载事件上运行以下命令;
Process[] pname = Process.GetProcessesByName(AppDomain.CurrentDomain.FriendlyName.Remove(AppDomain.CurrentDomain.FriendlyName.Length - 4));
if (pname.Length > 1)
{
pname[0].Kill();
}
实际上是可行的.....千载难逢。说真的,这很管用……第一次运行时,第二次应用程序将无法加载。如果我再运行5次,它可能会运行。
它似乎不太可靠,有没有人有更优雅的解决方案?
谢谢!
这对我有用
if (pname.Length > 1)
{
pname.Where(p => p.Id != Process.GetCurrentProcess().Id).First().Kill();
}
您是否可以尝试使用此代码而不是使用可执行文件名来获取进程
Process currentProcess = Process.GetCurrentProcess();
Process[] processItems = Process.GetProcessesByName(currentProcess.ProcessName);
你可以改变你的逻辑。为什么不打电话给环境部。当基于条件pname运行另一个实例时退出。长度= = 1