Nur eine Instanz eines Programms zulassen

  • Wie erreicht man, das nur eine Instanz eines Programs gleichzeitig laufen kann?
    Mit diesem Code wird verhindert man, das eine Applikation mehr als einmal innerhalb einer Session (Anmeldung) ausgeführt werden kann:

    Quellcode

    1. private const string AppGuid = "97E652FF-73A5-3ED6-A4E5-DA2AF2132C98";
    2. [STAThread] private static void Main()
    3. {
    4. using (Mutex progMutex = new Mutex(false, AppGuid))
    5. {
    6. if (!progMutex.WaitOne(0, false))
    7. {
    8. MessageBox.Show("Dieses Programm ist bereits geöffnet");
    9. return;
    10. }
    11. Application.Run(new Form1());
    12. }
    13. }
    Alles anzeigen


    Die AppGuid sollte natürlich eine eindeutig "Id" für das Programm sein. Am besten erzeugt man dafür eine Guid.

    Soll die Anwendung in allen Sessions nur einmal ausgeführt werden können, muss man den Mutex in den global Namespace schreiben:

    Quellcode

    1. private const string AppGuid = "97E652FF-73A5-3ED6-A4E5-DA2AF2132C98";
    2. [STAThread] private static void Main()
    3. {
    4. using (Mutex progMutex = new Mutex(false, @"Global\" + AppGuid))
    5. {
    6. if (!progMutex.WaitOne(0, false))
    7. {
    8. MessageBox.Show("Dieses Programm ist bereits geöffnet");
    9. return;
    10. }
    11. Application.Run(new Form1());
    12. }
    13. }
    Alles anzeigen

    22.607 mal gelesen