Nur eine Instanz eines Programms zulassen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • 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

    2.761 mal gelesen