Nur eine Instanz eines Programms zulassen

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • 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:

    Source Code

    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. }
    Display All


    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:

    Source Code

    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. }
    Display All

    3,971 times viewed