我正在开发一个程序,其中只有一个实例可以运行.我知道我可以应用互斥锁来防止多个实例运行.
但我想要它,所以如果一个新的应用程序实例运行,它应该终止旧的.可执行文件将始终具有相同的名称.
我已经尝试在表单加载事件上运行以下命令;
Process[] pname = Process.GetProcessesByName(AppDomain.CurrentDomain.FriendlyName.Remove(AppDomain.CurrentDomain.FriendlyName.Length - 4));
if (pname.Length > 1)
{
pname[0].Kill();
}
Run Code Online (Sandbox Code Playgroud)
哪个实际有效.....每次蓝月亮一次.说真的,它工作..第一次,第二次应用程序将根本不加载.如果我运行它大约5次,它可能会运行.
它似乎不太可靠,是否有人可能有更优雅的解决方案?
谢谢!
这对我有用
if (pname.Length > 1)
{
pname.Where(p => p.Id != Process.GetCurrentProcess().Id).First().Kill();
}
Run Code Online (Sandbox Code Playgroud)