Skip to main content

Waitforexit Beispiel C Skript


Elina: Danke für deine Antwort. Es gibt einige Notizen am unteren Rand dieses MSDN-Dokuments (msdn. microsoften-uslibraryhellip), die über potenzielle Deadlocks warnen, wenn Sie bis zum Ende der beiden umgeleiteten Stdout - und Stderr-Ströme synchron lesen. Es ist schwer zu sagen, ob Ihre Lösung anfällig für dieses Problem ist. Außerdem scheint es, dass du die process39 stdoutstderr Ausgabe direkt als Eingang sendest. Warum. ) Ndash Matthew Piatt Dies ist eine moderne, TPL-basierte Lösung (Task Parallel Library, TPL) basierte Lösung für 4.5 und höher. Antwort # 2 am: Juli 12, 2010, 07:10:13 am »Ich Sache, dass dies einfach und besser Ansatz (wir brauchen nicht AutoResetEvent): Antwort # 2 am: Mai 12, 2010, 10:49:13 pm» True, aber shouldn39t Sie tun. FileName Pfad quotggsci. exequot lt Obeycommand. txtquot, um Ihren Code zu zu vereinfachen Oder vielleicht etwas gleichbedeutend mit quotecho Befehl quotieren Pfad quotggsci. exequot, wenn Sie wirklich don39t eine separate obeycommand. txt-Datei verwenden möchten. Ndash Amit Naidu Ihre Lösung braucht nicht AutoResetEvent aber Sie Umfrage. Wenn du anstelle von Event-Event (wenn sie verfügbar sind), dann sind Sie mit CPU ohne Grund und das deuten darauf hin, dass Sie ein schlechter Programmierer sind. Ihre Lösung ist wirklich schlecht, wenn mit dem anderen mit AutoResetEvent verglichen. (Aber ich habe dir nicht gegeben, weil du versucht hast zu helfen). Ndash Eric Ouellet Ich war mit dem gleichen Problem, aber der Grund war anders. Es würde aber unter Windows 8 passieren, aber nicht unter Windows 7. Die folgende Zeile scheint das Problem verursacht zu haben. Die Lösung bestand darin, UseShellExecute NICHT zu deaktivieren. Ich habe jetzt ein Shell Popup-Fenster, das ist unerwünscht, aber viel besser als das Programm wartet auf nichts Besonderes passieren. So fügte ich das folgende Work-around hinzu: Jetzt das einzige, was mich stört, ist, warum dies geschieht unter Windows 8 an erster Stelle. Antwortete 13. Januar 15 um 10:35 Ich habe versucht, eine Klasse, die Ihr Problem mit asynchronen Stream zu lösen, zu lesen, indem Sie in Rechnung Mark Byers, Rob, stevejay Antworten zu machen. Dabei erkannte ich, dass es einen Fehler im Zusammenhang mit asynchrone Prozess-Ausgabe-Stream zu lesen. Sie können das nicht tun: Sie erhalten System. InvalidOperationException. StandardOut wurde nicht umgeleitet oder der Prozess hat noch nicht begonnen. Dann müssen Sie die asynchrone Ausgabe starten, nachdem der Prozess gestartet wurde: So machen Sie eine Racebedingung, da der Ausgabestream Daten empfangen kann, bevor Sie ihn auf asynchron einstellen: Dann könnten einige Leute sagen, dass Sie nur den Stream vor Ihnen lesen müssen Setze es asynchron an. Aber das gleiche Problem tritt auf. Es wird eine Race-Bedingung zwischen dem synchronen Lesen und setzen den Stream in den asynchronen Modus. Es gibt keine Möglichkeit, das sichere asynchrone Lesen eines Ausgabestreams eines Prozesses in der eigentlichen Weise zu erledigen. Process und ProcessStartInfo wurden entworfen. Sie sind wahrscheinlich besser mit asynchronen lesen wie vorgeschlagen von anderen Benutzern für Ihren Fall. Aber du solltest dir bewusst sein, dass du wegen der Rennbedingung einige Informationen vermissen kannst. Wie lange 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.

Comments

Popular posts from this blog

Corsa Hatch Ss 2009 Forexstrategiesresources

Die Top-Gear-Auto-Review: Vauxhall Corsa Standard vier Meter Supermini wie die Corsa thats littered britischen Straßen länger als die meisten von uns würde sich erinnern. Obwohl in dieser vierten Generation, seine eigentlich ziemlich gut. Nach einer großen Erneuerung, um es vage aussehen wie die Adam, macht die Corsa ein rationales Fall für sich selbst über Reflex, Nearest-Dealer-Kauf. Jedes Panel ist neu, obwohl es immer noch die Corsa ähnelt, die so viele Leute in Scharen gekauft haben. Geschärft und aufgeräumt, ist es jetzt Sport frische Motoren, Lenkung und Fahrwerk abgestimmt speziell für UK Straßen und ein neues Interieur. Es ist das beste Corsa überhaupt. Das ist mehr ein Kompliment als es klingt. Highlights aus dem Bereich Diese Website wird von BBC Worldwide. BBC Worldwide Ltd. Die Top Gear Wortmarke und Logo sind Marken der BBC und werden unter Lizenz BBC Worldwide ist ein kommerzielles Unternehmen, das im Besitz der BBC (und nur der BBC) ist. Kein Geld aus der Lizenzgebühr w

Forex Trading Stellenangebote In Kanada

Forex Vorschau: Canada8217s Jobs Report (Jan.) vor 4 Tagen geschrieben 4:00 AM 8 Februar 2017 1 Kommentar Wie y8217all tun, Forex-Freunde Sie sind auf der Suche nach einem wahrscheinlichen Katalysator, mit dem Sie einige schnelle Pips aus der Loonie vor dem Woche endet Wenn Sie sind, dann wissen Sie nur, dass Kanada wird seinen Arbeitsplatz Bericht freizugeben Freitag (10. Februar, 13:30 Uhr GMT). Und wenn Sie aufstehen müssen, um zu beschleunigen, was passiert letztes Mal, sowie what8217s erwartet für die kommende Version, dann today8217s Zuschreibung wird Ihnen helfen. Was geschah letztes Mal Arbeitslosenrate: Aufwärtstrend von 6,8 auf 6,9 wie erwartet Netto-Beschäftigungsänderung: 53,7K vs -5,0K erwartet, 10,7K vorherige Erwerbsbeteiligung: kletterte zurück auf 65,8 von 65,6 Der allgemeine Konsens unter den Ökonomen war, dass Kanada würde Schuppen 5K Arbeitsplätze im Dezember. Allerdings hat die kanadische Wirtschaft einen Nettozuwachs von 53,7 K Arbeitsplätzen statt. Dies markiert