|
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
|
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.
|
//No other instance was found, return null.
|
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
|
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.
|
'No other instance was found, return null.
|
End Function 'RunningInstance
|
|
|
|