1.5 How can I make sure there is only one instance of my application running?


Saar Carmi shows how to do this in his sample found on C# Corner. In it, he uses the Process class in System.Diagnostics to implement this functionality using code such as

[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


© 2001-2010 Copyright Syncfusion Inc. All rights reserved.  |  Privacy Policy  |  Contact  |  Sitemap