Tuesday 7 November 2017

Prozessinfo Waitforexit


Elina: Danke für deine Antwort. Es gibt einige Notizen am unteren Rand dieses MSDN-Dokuments (msdn. microsoften-uslibraryhellip), die vor potenziellen Deadlocks warnen, wenn Sie das Ende der beiden umgeleiteten Stdout - und Stderr-Streams synchron lesen. Es ist schwer zu sagen, ob Ihre Lösung anfällig für dieses Problem ist. Auch scheint es, dass Sie den Prozess39 stdoutstderr Ausgang rechts zurück als Eingang senden. 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 ist einfach und besser Ansatz (wir brauchen nicht AutoResetEvent): Antwort # 2 am: Mai 12, 2010, 10:12: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 Sie statt der Verwendung von Ereignis (wenn sie verfügbar sind) abstimmen, dann verwenden Sie CPU ohne Grund und dass Sie sind ein schlechter Programmierer. Ihre Lösung ist wirklich schlecht, wenn die anderen mit AutoResetEvent verglichen werden. (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 jedoch unter Windows 8, aber nicht unter Windows 7 auftreten. Die folgende Zeile scheint das Problem verursacht haben. Die Lösung war, NICHT deaktivieren UseShellExecute. Ich erhielt nun ein Shell-Popup-Fenster, das unerwünscht ist, aber viel besser als das Programm wartet auf nichts Besonderes passieren. So fügte ich die folgenden Work-around für das: Jetzt ist das einzige, was mich stört, warum dies geschieht unter Windows 8 an erster Stelle. Ich habe versucht, eine Klasse, die Ihr Problem mit Hilfe von asynchronen Stream zu lösen, indem Sie in Konto Mark Byers, Rob, stevejay Antworten lösen würde. 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 weitergeleitet oder der Prozess hat noch nicht begonnen. Danach müssen Sie die asynchrone Ausgabe starten, die nach dem Start des Prozesses gelesen wird. Führen Sie deshalb eine Racebedingung aus, da der Ausgabestream Daten empfangen kann, bevor Sie ihn auf asynchron setzen. Dann könnten einige Leute sagen, dass Sie nur den Stream vor Ihnen lesen müssen Setzen Sie es auf asynchron. Aber das gleiche Problem tritt auf. Es wird eine Racebedingung zwischen dem synchronen Lesen und dem Setzen des Streams in den asynchronen Modus geben. 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 von anderen Benutzern für Ihren Fall vorgeschlagen. Aber Sie sollten sich bewusst sein, dass Sie einige Informationen aufgrund der Race-Bedingung verpassen könnte. Ich sah auf verschiedene Threads über diese, aber alle von ihnen verwendet die Process. RedirectStandardOutput True, die ich nicht. Ich versuche, einen Prozess zu öffnen (Konsolenanwendung, nicht von mir erstellt), um es zu kompilieren eine spezielle. acs-Datei zu einer. o-Datei. Die Struktur ist einfach, das einzige Argument ist die Datei, die Sie kompilieren möchten. Aber auf bestimmte Dateien meine Anwendung hängt, wenn versucht, den Prozess zu öffnen. Heres mein Code: Zum Starten des Prozesses benutze ich so ziemlich den gleichen Code, den ein anderer in C. gemacht hat. Und sein Code funktioniert einwandfrei. Ich hoffe, dein Tag war besser als gestern, aber das ist schlimmer als morgen. Bitte als Antwort markieren, wenn ich dein Problem gelöst habe. ) Haben Sie die FileNames und Argumente von denen, die Arbeit und diejenigen, die nicht Gibt es einen Unterschied in ihnen, wie die, die Arbeit nicht enthalten Leerzeichen in der DateiName verglichen Oder Argumente und diejenigen, die Arbeit dont enthalten Leerzeichen in ihnen enthalten Wenn Sie feststellen, dass das Problem dann sein, müssen Sie Anführungszeichen an den Anfang und das Ende des FileName oder Arguments hinzufügen. Meine erste Vermutung ist die Argumente braucht die Zitate wie diese, weil ich leere Felder in Ihrem Beispiel der Argumente sehen. (34) amp SavePath amp Chr (34) Wenn Sie sagen, es kann nicht getan werden, dann krank es versuchen Edited by IronRazerz Saturday, January 03, 2015 3:51 PM Als Antwort von Visual Vincent markiert Samstag, 03. Januar 2015 4:33 PM Alle Antworten Hast du die FileNames und Argumente von denen verglichen, die funktionieren und diejenigen, die nicht Gibt es einen Unterschied in ihnen, wie diejenigen, die Arbeit keine Leerzeichen enthalten in der FileName oder Argumente und diejenigen, die Arbeit dont enthalten Leerzeichen in ihnen enthalten Wenn Sie das Problem finden, dann müssen Sie Anführungszeichen an den Anfang und das Ende des FileName oder Arguments hinzufügen. Meine erste Vermutung ist die Argumente braucht die Zitate wie diese, weil ich leere Felder in Ihrem Beispiel der Argumente sehen. (34) amp SavePath amp Chr (34) Wenn Sie sagen, es kann nicht getan werden, dann krank es versuchen Edited by IronRazerz Saturday, January 03, 2015 3:51 PM Als Antwort von Visual Vincent markiert Samstag, 03. Januar 2015 4:33 PM Samstag, den 3. Januar 2015 um 15:41 Uhr Habt ihr den gleichen Befehl manuell in einem Konsolenfenster versucht Vielleicht stoppt es und wartet auf etwas. Oder legen Sie CreateNoWindow nicht fest. ErrorDialog und WIndowStyle und sehen, was passiert. Haben Sie verglichen die FileNames und Argumente von denen, die Arbeit und diejenigen, die dont Gibt es einen Unterschied in ihnen wie die, die Arbeit enthalten keine Leerzeichen in dem FileName oder den Argumenten, und diejenigen, die arbeiten, enthalten keine Leerzeichen in ihnen enthalten Wenn Sie das Problem finden, dann müssen Sie Anführungszeichen an den Anfang und das Ende des FileName oder Arguments hinzufügen. Meine erste Vermutung ist die Argumente braucht die Zitate wie diese, weil ich leere Felder in Ihrem Beispiel der Argumente sehen. Ps. Arguments Chr (34) amp SavePath amp Chr (34) Wenn Sie sagen, es kann nicht getan werden, dann krank es versuchen Dies tatsächlich gemacht. Ich hatte vergessen, dass Leerzeichen macht es ein neues Argument, albern mich. Ich benutze keine Prozess-Argumente, die oft. ) Ich hoffe, dein Tag war besser als gestern, aber das ist schlimmer als morgen. Bitte als Antwort markieren, wenn ich dein Problem gelöst habe. ) Herausgegeben von Visual Vincent Samstag, 3. Januar 2015 16:33

No comments:

Post a Comment