Benutzer-Werkzeuge

Webseiten-Werkzeuge


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.

Mutex.cs
  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. {
  24. // Eindeutige Programmkennung erzeugen
  25. mutex = new Mutex( false, System.Reflection.Assembly.GetExecutingAssembly().GetName().Name+"_MultiStartPrevent" );
  26.  
  27. if ( mutex.WaitOne( 0, true ) ) return false;
  28. return true;
  29. }
  30. }
c-sharp/mehrfachen_start_eines_programmes_verhindern.txt · Zuletzt geändert: Tue 24. Nov 2020, 20:57 Uhr von Stefan Jahn