Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 19013|Antwort: 0

[Quelle] C# erlaubt nur die korrekte Ausführung einer Instanz der Anwendung

[Link kopieren]
Veröffentlicht am 10.12.2016 14:35:34 | | |
C#-Programme erlauben nur einer Instanz, den korrekten Code auszuführen
http://www.itsvse.com/thread-3391-1-1.html
(Quelle: Architekt)


Der untenstehende Code ist auch falsch!! Korrekter Code wie oben!!


Manchmal müssen wir nur eine Instanz der Anwendung ausführen lassen, und wenn der Prozess startet und feststellt, dass eine Instanz der Anwendung läuft, hört sie automatisch auf. Wir implementieren sie üblicherweise in der Hauptfunktion über einen Mutex-Mutex, der üblicherweise geschrieben wird:

Wenn wir nach Antworten suchen, kommen und gehen wir oft in Eile und ignorieren die Funktionen und Vorsichtsmaßnahmen von Mutex. Nach einem einfachen Test, okay, mach es und benutze es. An dieser Stelle übersehen wir eine wichtige Voraussetzung:Mutex-Namenskonventionen. Die obige Schreibmethode funktioniert problemlos unter einem einzelnen Benutzer; Bei Multi-User kann jeder Benutzer eine Instanz starten, sodass eine einzelne Instanz nicht garantiert werden kann.

Wenn Sie es auf einem Terminalserver verwenden müssen und nur eine Instanz zulassen, verwenden Sie folgende Methode:


Hier ist die Beschreibung von MSDN:


Auf Servern, die Terminaldienste ausführen, kann benanntes System-Mutex zwei Sichtbarkeitsstufen haben. Wenn der Name mit dem Präfix "Global\" beginnt, ist der Mutex in allen Terminalserversitzungen sichtbar. Wenn der Name mit dem Präfix "Local\" beginnt, ist der Mutex nur in der Terminalserver-Sitzung sichtbar, die ihn erstellt hat. In diesem Fall kann jede andere Terminalserver-Sitzung auf dem Server einen separaten Mutex mit demselben Namen haben. Wenn du einen benannten Mutex erstellst, ohne ein Präfix anzugeben, nimmt er das Präfix "Local\" an. In einer Terminalserversitzung sind zwei Mutexe mit unterschiedlichen Namenspräfixen unabhängige Mutexe, und die beiden Mutexe sind für alle Prozesse in der Terminalserversitzung sichtbar. Das heißt, die Präfixnamen "Global" und "Local" beschreiben den Bereich des Mutex-Namens relativ zur Terminalserversitzung, nicht zum Prozess.






Vorhergehend:Die Registrierung von Komponenten für COM-Interop ist ausgegraut
Nächster:C#-Programme erlauben nur einer Instanz, den korrekten Code auszuführen
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com