如何确保只有一个应用程序实例在运行?

作者: 孟宪会 出自: 【孟宪会之精彩世界】 发布日期: 2003-6-16 6:58:22

用System.Diagnostics 的Process类

[C#]

public static Process RunningInstance()
{
    Process current = Process.GetCurrentProcess();
    Process[] processes = Process.GetProcessesByName(current.ProcessName);
    //Loop through the running processes in with the same name 

    foreach (Process process in processes)
    {
        //Ignore the current process 
        if (process.Id != current.Id)
        {
            //Make sure that the process is running from the exe file. 
            if (Assembly.GetExecutingAssembly().Location.Replace("/", "\\") == current.MainModule.FileName)
            {
                //Return the other process instance. 
                return process;
            }
        }
    }
    //No other instance was found, return null. 
    return null;
}

[VB.NET]

Public Shared Function RunningInstance() As Process

     Dim current As Process = Process.GetCurrentProcess()  
     Dim processes As Process() = Process.GetProcessesByName(current.ProcessName) 
 
     'Loop through the running processes in with the same name  
     Dim process As Process 
 
     For Each process In processes  
          'Ignore the current process  
          If process.Id <> current.Id Then 
 
               'Make sure that the process is running from the exe file.  
               If [Assembly].GetExecutingAssembly().Location.Replace("/", "\") = current.MainModule.FileName Then  
                    'Return the other process instance.  
                    Return process  
               End If  
          End If 
 
     Next process 
 
     'No other instance was found, return null.  
     Return Nothing 

End Function 'RunningInstance
Contributors: FHL