Tuesday 6 June 2017

Waitforexit Prozess C 41 Film


Wie permanent ist WaitForExit (). Ich meine, es gibt irgendetwas eine Alternative, die man tun kann, um das Warten zu brechen, sonst werde ich meinen Thread in einer separaten Funktion ausführen und es durch globale Variablen steuern. Grund - ein CMD. EXE-Thread, mit einer Konsolen-Anwendung läuft, die wir vor dem Faden, der seinen Kurs läuft, abbrechen muss. Hier ist was wir haben: ProcessStartInfo psi new ProcessStartInfo (quotCMD. EXEquot, query) psi. UseShellExecute useShellExec psi. RedirectStandardOutput stdout psi. CreateNoWindow noWindow hbProc new Process () hbProc Process. Start (psi) hbProc. WaitForExit () Nun, könnte man Verwenden Sie: while (hbProc. WaitForExit (someTimeout)) if (ShouldCancel) brechen am Sep 19, 5:15 am, quotMarc Gravellquot ltmarc. grav. Gt schrieb: gt Nun könnten Sie: gt gt while (hbProc. WaitForExit (someTimeout)) gt if (ShouldCancel) brechen gt gt gt gt Marc (beachten Sie, es gibt keinen Grund, den neuen Prozess () und den Prozess aufzurufen. Start (psi) Oder du könntest: hbProc new process () hbProc. EnableRaisingEvents true hbProc. Exited new EventHandler (functionToCallAfterProcesit) hbProc. StartInfo psi hbProc. Start () andere Thread - on will das Ereignis abbrechen: hbProc - new EventHandler ( FunctionToCallAfterProcesit) In jedem Fall ist nur bewusst sein, die potenzielle Race-Bedingung zwischen dem Prozess verlassen und der Wunsch, das Warten abzubrechen. Am 19. September, 4:11 Uhr, Alistair George ltnon xtra. co. nzgt schrieb: gt Wie dauerhaft ist WaitForExit () Ich meine, es gibt alles was gt Alternative kann man tun, um das Warten zu brechen, sonst werde ich meinen Thread gt in einer separaten Funktion laufen und kontrolliere es durch globale Variablen. Gt Reason - ein CMD. EXE Thread mit einer Konsole Anwendung laufen, die wir gt müssen, um vor dem Faden, der seinen Kurs läuft, zu stornieren. Gt Hier ist was wir haben: gt ProcessStartInfo psi new gt ProcessStartInfo (quotCMD. EXEquot, Abfrage) gt psi. UseShellExecute useShellExec gt psi. RedirectStandardOutput stdout gt psi. CreateNoWindow noWindow gt hbProc new Process () gt hbProc Process. Start (psi) gt HbProc. WaitForExit () gt gt Danke, gt Alistair. Sie können entweder den Thread mit WaitForExit () töten oder die Überladung verwenden, mit der Sie ein Timeout bool WaitForExit (int msToWait) angeben können. Wenn du es in einem separaten Thread betreibst und es töten wirst du eine unterbrochene Ausnahme bekommen. Vielleicht möchten Sie sicherstellen, dass der Prozess, den Sie begonnen haben, nicht noch läuft (wenn es ist, töte es). Gt Du kannst entweder den Thread mit WaitForExit () töten oder die gt-Überladung verwenden, mit der du einen Timeout bool WaitForExit (int gt msToWait) angeben kannst. Wenn Sie es in einem separaten Thread laufen und es töten, werden Sie eine unterbrochene Ausnahme bekommen. Vielleicht möchten Sie sicherstellen, dass der gt-Prozess, den Sie begonnen haben, nicht noch läuft (wenn es ist, töte es). Gt Danke Jungs mit den Vorschlägen, die nützlich sind. Wird raten, welche Option am besten funktioniert Al Copyright Kopie 2005-2016, TechTalkz. Alle Rechte vorbehalten. Lets lesen, was MSDN darüber sagt: Die WaitForExit () () () Überlast wird verwendet, um den aktuellen Thread zu warten, bis der zugehörige Prozess beendet wird. Diese Methode weist die Prozesskomponente an, eine unendliche Zeit zu warten, bis der Prozess beendet wird. Dies kann dazu führen, dass eine Anwendung nicht mehr reagiert. Wenn Sie zum Beispiel CloseMainWindow für einen Prozess aufrufen, der über eine Benutzeroberfläche verfügt, wird die Anforderung des Betriebssystems, den zugeordneten Prozess zu beenden, möglicherweise nicht bearbeitet, wenn der Prozess geschrieben wird, um niemals in seine Nachrichtenschleife zu gelangen. Diese Überlastung stellt sicher, dass alle Verarbeitung abgeschlossen ist, einschließlich der Behandlung von asynchronen Ereignissen für umgeleitete Standardausgabe. Sie sollten diese Überladung nach einem Aufruf der WaitForExit (Int32) Überlast verwenden, wenn die Standardausgabe an asynchrone Ereignishandler umgeleitet wurde. Das ist natürlich für Was macht Sie denken, dass es nicht warten, bis die Note-Prozess zu beenden Was sind die Zeichen dafür, was ist der Beweis Freitag, 20. Februar 2009 20.13 Nicht sicher, ob dies geändert hat, aber vor kurzem wieder in den Tag Anwendungen auf dem Fenster Handy nie wirklich geschlossen, wenn Sie die X schließe sie zu schließen, würden sie nur minimieren und halten im Hintergrund laufen (dies war kein Fehler, es war ein Feature, seit dem nächsten Mal starten Sie die App würde es wirklich schnell gestartet werden, yah Ich weiß, wahnsinnig, aber wahr), so könnte das sein, warum WaitForExit ist vielleicht seltsam verhalten und warten auf App-Start anstelle von Exit. Aber dann wieder ist es nur Spekulation auf der Grundlage von Knowlegde von alten Versionen von Windows Mobile. Freitag, den 20. Februar 2009 um 11:03 Uhr Id mag diese Frage aufheben. Im auf Windows Mobile 6 Standard und ich versuche, eine Browser-Instanz zu erzeugen. Ich möchte warten, bis der Benutzer den Browser schließt. Aber WaitForExit kehrt extrem schnell zurück. Hier ist der Code: Process p new Process () p. StartInfo. Argumente quotexample-sitequot p. StartInfo. Verb quotOpenquot p. StartInfo. UseShellExecute false p. StartInfo. FileName quotIExplore. exequot p. Start () p. WaitForExit () MessageBox. Show ("Now der Browser sollte closedquot sein) Was sollte der richtige Weg, um die erwarteten Resuts erhalten werden, wenn das Symbol ist. Symbol. AlexB Dienstag, 09. Juni 2009 um 9:58 Uhr Im sehen das gleiche Problem, aber auf XP. Ich denke, der Beweis kann in jedem Debugger gesehen werden (wie ich sehe), oder in jeder Konsolenanwendung (nicht unbedingt auf Mobile) Mittwoch, 2. September 2009 08.35 Uhr Außer, dass Sie nicht erhalten dann ein Prozess-Objekt, das Sie können benutzen. MyProc. WaitForExit () Es wird immer noch sofort zurückgegeben, wenn Sie versuchen, Dim myProc als neuen Prozess () myProc Process. Start (quotiexplorequot, quotfinance. yahooqhpsquot Symbol) Mittwoch, September 02, 2009 8:48 PM Problem ist, dass du keine neue Instanz von iexplore. exe startet. Sie erstellen nur ein neues Fenster zum bestehenden Prozess. Meine Vermutung ist iexplore. exe startet, sieht eine vorherige Instanz und kommuniziert mit der vorherigen Instanz, so dass es öffnet sich das neue Fenster, und dann diese Instanz Sie begann sofort beendet. So ist das Verhalten richtig und zu erwarten. Blog. voidnish Mittwoch, September 02, 2009 8:52 PM Microsoft führt eine Online-Umfrage durch, um Ihre Meinung über die Msdn-Website zu verstehen. Wenn Sie sich für die Teilnahme entscheiden, wird Ihnen die Online-Umfrage präsentiert, wenn Sie die Msdn-Website verlassen. Möchten Sie teilnehmen

No comments:

Post a Comment