Warten, bis ein externer Prozess abgeschlossen wurde

7

Ich habe eine Methode, die aufgerufen wird, obwohl ich möchte, dass das Meldungsfeld angezeigt wird, nachdem die Methode abgeschlossen wurde (jetzt wird das Meldungsfeld direkt nach dem Aufruf der Methode angezeigt):

%Vor%

StartConvIpod:

%Vor%     
Adam Jones 21.07.2011, 16:52
quelle

4 Antworten

7

Verwenden Sie dies am Ende Ihres Codes:

%Vor%

Vergessen Sie nicht, seinen Rückgabewert zu überprüfen, um sicherzustellen, dass es tatsächlich erfolgreich war:

%Vor%     
doctorless 21.07.2011, 17:01
quelle
11

Sie möchten das hinzufügen:

%Vor%     
Jason Down 21.07.2011 17:00
quelle
3

Sie haben ein paar Optionen. In StartConvIpod können Sie p.WaitForExit() nach p.Start();

setzen

Das funktioniert, blockiert aber wahrscheinlich den UI-Thread (es scheint, dass Ihre Anwendung eingefroren ist). Stattdessen würde ich Ihre Benutzeroberfläche in einen "Arbeitsstatus" ändern, z. B. die Schaltfläche "Konvertierung starten" deaktivieren und eine Beschriftung auf "Konvertieren" setzen (nur als Beispiel). Dann würde ich mich für das Ereignis p.Exited anmelden und wenn Ihr Prozess beendet wird. Wenn das Ereignis ausgelöst wird, können Sie der Benutzeroberfläche mitteilen, dass die Konvertierung abgeschlossen ist, und den Beendigungscode des Prozesses überprüfen.

    
vcsjones 21.07.2011 17:01
quelle
0

Verwenden Sie das Process.Exited-Ereignis gemäß der MSDN-Dokumentation für das Process Exit-Ereignis und Abfrage für 30 Sekunden, bis das Exited-Ereignis ausgelöst wird und den ExitCode überprüft.

%Vor%     
Jeremy Thompson 17.04.2017 23:42
quelle

Tags und Links