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

Platform: WinForms| Category: Deployment

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

Share with

Related FAQs

Couldn't find the FAQs you're looking for?

Please submit your question and answer.