Ich habe eine Konsolenanwendung, die serverbasiert ist. Ich möchte nur 1 Instanz davon gleichzeitig für einen bestimmten Server ausgeführt werden (dies ist unabhängig von dem Benutzer, der es möglicherweise ausführt).
Ich muss eine Überprüfung hinzufügen, um sicherzustellen, dass nur eine Instanz davon ausgeführt wird. Ich kann dies bereits tun, indem ich die laufenden Prozesse auf dem Server überprüfe, aber ist dies die beste Vorgehensweise?
Da ich ständig auf der Suche nach Möglichkeiten bin, die Codierungsstile zu verbessern und auf dem neuesten Stand zu bleiben, gibt es einen besseren Weg, dies in letzter Zeit zu tun? Wenn Sie denken - "Wenn es nicht kaputt ist, reparieren Sie es nicht", Vielleicht haben Sie Recht, aber ich möchte mehr Nutzen aus der eingebauten Funktionalität des Frameworks ziehen.
Ich verwende .net v3.5, und dies ist eine Konsolenanwendung.
Vielen Dank im Voraus
Sie sollten die Mutex-Klasse verwenden, wie hier erklärt: C # .NET Single Instance-Anwendung
Was ist die richtige Art zu erstellen? Eine einzelne Instanz-Anwendung hat einige Möglichkeiten, dies zu tun, einschließlich des oben genannten Artikels
Ich habe viel Code und Teile von Code von überall her gesammelt, aber schließlich habe ich die magische Soße gefunden, die konzeptionell eine Singleton-Konsolen-App erstellt, die auch weiterhin Befehlszeilenargumente erhalten kann. Wenn das also zum ersten Mal ausgeführt wird, verarbeitet es seine Befehlszeilenparameter und wartet dann. Wenn Sie versuchen, das erneut auszuführen, wenn das erste noch ausgeführt wird, werden diese Befehlszeilenargumente an den ersten Prozess zur Behandlung übergeben und der zweite Prozess stirbt.
%Vor%