Sunday 12 November 2017

Waitforexit Methode


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 Rasse Bedingung verpassen könnte. WAITForExit () ist eine Thread-Blocking-Methode Dies ist genau die Ursache des Problems. Wenn WaitForExit aus dem Forms-Thread aufgerufen wird, wird verhindert, dass das Formular neu gezeichnet wird. Das Ziehen von etwas vor einem blockierten Fenster hinterlässt eine Spur des gezogenen Fensters. Vorgeschlagen als Antwort von ahmedilyas Moderator Donnerstag, 28. Juli 2011 10:34 Als Antwort markiert von Jackie-Sun Moderator Code would be better and it Wäre auch besser, wenn Sie uns genau sagen können, was Sie zu erreichen versuchen. Die WaitForExit () wartet einfach (blockiert den Code für diese Dauer), damit ein Prozess beendet wird, bevor Sie mit dem Ausführen des aufrufenden Codes fortfahren. C MVP (2007-2010) MS Vendor - MS Alle Wege Follower seit 1995 MS Super Evangelist MSDN Foren Moderator Als Antwort vorgeschlagen von ahmedilyas Moderator Als Antwort markiert von Jackie-Sun Moderator Montag, August 08, 2011 6:50 AM Donnerstag, 28. Juli 2011 um 09:57 Uhr Alle Antworten Ich denke, das hat keine Beziehung mit waitforexit Funktion. Die Sie ziehen. Erste Exe-Form oder zweite Exe-Form. Ein kleiner Code wird geschätzt, markieren Sie meinen Beitrag als Antwort, wenn mein Beitrag nützlich für Sie war, wäre es besser, und es wäre auch besser, wenn Sie uns sagen können, was genau Sie versuchen zu erreichen . Die WaitForExit () wartet einfach (blockiert den Code für diese Dauer), damit ein Prozess beendet wird, bevor Sie mit dem Ausführen des aufrufenden Codes fortfahren. C MVP (2007-2010) MS Vendor - MS Alle Wege Follower seit 1995 MS Super Evangelist MSDN Foren Moderator Als Antwort vorgeschlagen von ahmedilyas Moderator Als Antwort markiert von Jackie-Sun Moderator Montag, August 08, 2011 6:50 AM Ich hatte checked. it hat Problem auf waitforexit () nur. i bemerkt, dass Problem, wenn verschieben zweite Exe-Formular Editiert von RAJ KUMAR. R Donnerstag, Juli 28, 2011 10:09 AM Hallo ihr alle, ich habe eine Antwort auf die Frage, was ich tun soll Um einen Vorgang zu beenden, bevor er mit dem Code fortfährt. Wird es nicht machen Ihr Formular zu verstecken oder zu minimieren, es sei denn, Sie sagen, Ihren Code, dies zu tun, bevor Sie WaitForExit () C MVP (2007-2010) MS Vendor - MS Alle Weg Follower seit 1995 MS Super Evangelist MSDN Foren Moderator Donnerstag, July 28, 2011 10:05 AM Alles ist funktionieren fine. but, wenn ich das Formular zu bewegen, zeigt es mehrere Form. Donnerstag, 28. Juli 2011 10:09 WaitForExit () ist eine Thread-Blocking-Methode Dies ist genau die Ursache des Problems. Wenn WaitForExit aus dem Forms-Thread aufgerufen wird, wird verhindert, dass das Formular neu gezeichnet wird. Das Ziehen von etwas vor einem blockierten Fenster hinterlässt eine Spur des gezogenen Fensters. Vorgeschlagen als Antwort von ahmedilyas Moderator Donnerstag, 28. Juli 2011 10:34 Als Antwort markiert von Jackie-Sun Moderator am Montag, den 28. August 2011 um 10:18 Uhr When you say showing multiple forms - reden Sie über mehrere Instanzen der Formulare oder nur die Drawrendering, wenn es die Drawrendering dann ja, wie bereits erwähnt - es ist, weil es für den Prozess zu beenden, bevor es fortsetzt warten und ist Thread-Blocking, so dass Sie sehen das quotproblemquot Sie Scheinen zu beschreiben. Es gibt keine quotfixquot für diese, da es nicht ein Fehler oder ein Problem, sondern nur, was Sie verwenden und wie Sie es verwenden. Gibt es einen Grund, warum Sie WaitForExit () verwenden. Müssen Sie Ihr Formular zeigen, wenn Sie WaitForExit () verwenden, warum Sie nicht das Formular verstecken oder minimieren, bevor Sie WaitForExit () aufrufen und dann es nachher wiederherstellen C MVP (2007-2010) MS Vendor - MS Alle Weg Follower seit 1995 MS 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 Helfen Sie uns, MSDN zu verbessern. Besuchen Sie unsere UserVoice-Seite, um auf Ideen Dev Centers Lernressourcen vorzulegen und abzustimmen

No comments:

Post a Comment