Stefans Wiki



Mehrfachen Start eines Programmes verhindern

Problem

Je nach Art des Programmes ist es unerwünscht bzw. kann sogar zu Fehlern oder Nebenwirkungen führen wenn man dieses mehrmals startet. Wie aber nun herausfinden ob das eigene Programm schon läuft?

Lösung

Dafür kann man sich die Mutex-Klasse aus System.Threading zu nutze machen.

 1: using System;
 2: using System.Threading;
 3:
 4: class Program
 5: {
 6:     private static Mutex mutex;
 7:
 8:     public static void Main( string[] args )
 9:     {
10:         // Falls Programm schon laeuft neuen Start verhindern.
11:         if ( IsRunning() ) return;
12:
13:         Console.WriteLine( "Hello World" );
14:         Console.ReadLine();
15:     }
16:
17:
18:     /// <summary>
19:     /// Pruefen ob Programm schon laueft.
20:     /// </summary>
21:     /// <returns>True = Programm laeuft schon</returns>
22:     public static bool IsRunning() {
23:         // Eindeutige Programmkennung erzeugen
24:         mutex = new Mutex( false, System.Reflection.Assembly.GetExecutingAssembly().GetName().Name+"_MultiStartPrevent" );
25:
26:         if ( mutex.WaitOne( 0, true ) ) return false;
27:         return true;
28:     }
29: }
c-sharp/mehrfachen_start_eines_programmes_verhindern.txt · Zuletzt geändert: 12.07.2011 12:33 (Externe Bearbeitung)
Quelle: http://stefanjahn.de/c-sharp:mehrfachen_start_eines_programmes_verhindern
Webseite: http://stefanjahn.de