Mutex verwenden

Für die Update-Funktion eines Dienstes habe ich eine extra EXE gebaut.
Diese wird vom Dienst aufgerufen, beendet den Dienst, überschreibt ihn mit einer neuen Version und startet ihn wieder.
Das Problem ist hier, wenn die Zip-Datei des Updates nicht ausgepackt werden kann (CRC-Fehler), dann werden ein paar mehr von den Update-Exen aufgerufen.
Um dies zu verhindern habe ich nun Mutex in die Update-Exe eingebaut.

Dies macht sich am besten in der „Program.cs“ der Anwendung.

Vorher (ohne Mutex) stand dort:

1
2
3
4
5
6
7
8
9
10
11
12
13
static class Program
{
	/// <summary>
	/// Der Haupteinstiegspunkt für die Anwendung.
	/// </summary>
	[STAThread]
	static void Main()
	{
		Application.EnableVisualStyles();
		Application.SetCompatibleTextRenderingDefault(false);
		Application.Run(new Form1());
	}
}

Und mit Mutex sieht das ganze dann so aus:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
static class Program
{
	/// <summary>
	/// Der Haupteinstiegspunkt für die Anwendung.
	/// </summary>
	[STAThread]
	static void Main()
	{
		Application.EnableVisualStyles();
		Application.SetCompatibleTextRenderingDefault(false);
 
		#region Form1 mit Mutex aufrufen
		bool createdNew;
 
		System.Threading.Mutex mutex = new System.Threading.Mutex(true, Application.ProductName, out createdNew);
		if(createdNew)
		{
			Application.Run(new Form1());
			mutex.ReleaseMutex();
		}
 
		#endregion
	}
}

leave your comment

*

Unterstütze den Frickelblog!