避免在一台机器上同时运行一应用程序的多个实例
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;  
}