如果我的程序在运行相同版本时已经运行,我想打开现有实例。我注意到这个问题只是要求名称存在,但如果版本较旧,我只想通知用户旧版本仍在运行,请在开始此版本之前删除旧版本。
另一个链接就是这个: Return to an already open application when a user tries to open a new instance但如果检测到旧版本或更新版本,他们不会谈论关闭实例。
答案 0 :(得分:3)
以最简单的方式,像这样进行检查:
foreach (var proc in Process.GetProcesses())
if (proc.MainModule.FileName == Process.GetCurrentProcess().MainModule.FileName)
//Shutdown your copy.
但更复杂的事情可能是这样的:
foreach (var proc in Process.GetProcesses())
{
if (proc.Id == Process.GetCurrentProcess().Id) continue;
var currName = AssemblyName.GetAssemblyName(Process.GetCurrentProcess().MainModule.FileName);
var procName = AssemblyName.GetAssemblyName(proc.MainModule.FileName);
if (currName.FullName == procName.FullName && /*and other parameters*/)
return;
}
祝你好运!
P.S .:“但要小心 - ”GetAssemblyName“仅适用于托管代码程序集,因此请在try-catch wrap中进行。”