Ich habe eine Konsolen-App, die eine lange Synchronisierung mit einem FTP-Server durchführt.
Eine andere Konsolenanwendung bereitet ein lokales Dateisystem mit einigen benötigten aktualisierten Dateien vor.
Dann wartet der zweite auf den ersten, bevor er den Namen eines letzten Verzeichnisses vertauscht, so dass es im Web sichtbar wird.
Ich habe nach dem besten Weg gesucht, die Synchronisierungs-App so zu konfigurieren, dass sie der zweiten App mitteilt, dass sie fertig ist. Es sieht so aus, als ob Data Copy für IPC verwenden am besten ist geeignete Lösung dafür.
Die Frage ist zweifach:
Wenn Sie lediglich eine Anwendung benachrichtigen müssen, dass die andere ihre Aufgabe abgeschlossen hat, besteht die einfachste Möglichkeit darin, ein benanntes EventWaitHandle zu verwenden. Das Objekt wird in seinem nicht signalisierten Status erstellt. Die erste App wartet auf den Griff, und die zweite App signalisiert dem Griff, wenn es seine Arbeit erledigt hat. Zum Beispiel:
%Vor%Damit wird das erste Programm eingerichtet, das auf die Synchronisation wartet. Die zweite Anwendung ist ebenso einfach:
%Vor%Wenn die zweite Anwendung Set aufruft, signalisiert sie das Ereignis und die erste Anwendung wird fortgesetzt.
Zu den weiteren beliebten Optionen für IPC gehören:
Wenn Sie nur eine Synchronisierung benötigen, können Sie ein Objekt Semaphore
oder Mutex
berücksichtigen. Es gibt Klassen, die im Namespace System.Threading
für .NET vorhanden sind. Wenn Sie benannte Versionen von diesen erstellen, gelten sie für die gesamte Maschine.