避免在一台机器上同时运行一应用程序的多个实例
private bool AppAlreadyRunning()
...{
System.Diagnostics.Process curProcess = System.Diagnostics.Process.GetCurrentProcess();
System.Diagnostics.Process[] allProcess = System.Diagnostics.Process.GetProcesses();
foreach (System.Diagnostics.Process process in allProcess)
...{
if (process.Id != curProcess.Id)
...{
if (process.ProcessName == curProcess.ProcessName)
return true;
}
}
return false;
}
对if (process.Id != curProcess.Id)不是很明白,为什么不是==
如果不相等说明什么呢,是不是当前进程没有运行
------解决方案--------------------process.Id != curProcess.Id
查找进程和当前程序的进程不是同一个
如果相等就是进程本身
判断程序路径和程序名我感觉都不大好
希望下面有人解答
------解决方案--------------------Process.GetProcesses(); 获取的Process是包括当前进行的。在比较的时候要除去本进程,是不是本进行通过ID来判读。所以就有了:
if (process.Id != curProcess.Id)
。。。
但程序改成如下可能就好理解了:
private bool AppAlreadyRunning()
{
System.Diagnostics.Process curProcess = System.Diagnostics.Process.GetCurrentProcess();
System.Diagnostics.Process[] allProcess = System.Diagnostics.Process.GetProcesses();
foreach (System.Diagnostics.Process process in allProcess)
...{
if (process.ProcessName == curProcess.ProcessName)
{
if (process.Id != curProcess.Id)
{
return true;
}
}
}
return false;
}