Also habe ich kämpfen dieses Thema für eine Weile jetzt und versuchte viele verschiedene Möglichkeiten, um es zu beheben, kann aber nicht. Grundsätzlich waht meine app tut ruft eine Java-Datei, um eine Anwendung auf einem Gerät zu laden. Während seine Beladung es druckt es auf ein richtext-Feld, dann möchte ich auf die nächste Datei verschieben. Das Problem, das ich habe, ist, dass, während die erste Datei geladen wird, versucht die 2. zu laden, welche Fälle Probleme. Ich habe versucht, die Wartezeit für den Ausgang, aber wenn ich das tun, dann werden die Ausgabedaten nicht in das Rich-Textfeld geschrieben. Irgendwelche Ideen versuchte ich, das Warten für Ausgang an vielen verschiedenen Plätzen zu setzen, aber es scheint nicht zu funktionieren. Zwei Methoden unten schreiben Sie die stdout oder Fehler auf die richtext Feld. Alle Ideen wäre toll. Bascally Ich brauche den Prozess zu beenden, so dass dann kann ich weiterhin gedacht, die forloop die nächste Datei laden. Werden Sie jede Art von Fehlermeldung Es scheint mir, wie Ihre Argumente sind - Xmx512M - jar. Fehlt ein Leerzeichen nach der Befehlszeilenoption - jar. Das könnte dazu führen, dass es nur sofort verlassen, weil nicht in der Lage, den Befehl zu verstehen. Auch, wie M. Babcock vorgeschlagen, die loaddPB Methode aus dem UI-Thread zu bewegen, und stellen Sie sicher, dass das Ladeteil in einer Semaphore zu wickeln, auf diese Weise nur eine einzelne Datei zu einem Zeitpunkt geladen wird, und die Benutzeroberfläche kann weiterhin tun, was es braucht tun. ndash SPFiredrake 9. Februar 12 um 15:29 Uhr Seien Sie gewarnt, dass dies etwas quothackishquot in diesem you39re noch den UI-Thread zu blockieren, aber you39re die Ereignisse durch die Nachrichtenwarteschlange manuell zu pumpen. Dies ist nicht eine bewährte Praxis, und die meisten Entwickler werden dagegen empfehlen. Die beste Option ist, den Ladecode in einen separaten Thread zu werfen. ndash SPFiredrake 9. Februar 12 um 15: 54NET System. Diagnostics. Process Klasse 8211 Teil 1 Process. WaitForExit und. Exited Ereignis aren8217t arbeitete ich dachte, dass ich dies der Fall sein, gefunden hatte, aber es war meine Schuld, wahrscheinlich das gleiche auch für Sie. Ich werde gehen, was ich gefunden, während der Erforschung und Lösung dieses Problems. Kurze Antwort: Wenn Sie Umleiten StandardOutput und / oder Standarderror, optimale Nutzung der asynchrone Process. BeginErrorReadLine () und. BeginOutputReadLine () Methoden VOR. WaitForExit () aufrufen und erfassen die die Ausgabe durch die Process. ErrorDataReceived Einhaken und. OutputDataReceived Ereignisse. Die lange Antwort beginnt mit mir mit dem Visual Studio diffmerge. exe im Common7 / IDE-Ordner, um Textdateien im Batch-Modus zu vergleichen. Ich bin der Einführung eines Regressionstests in einem Build initiiert Batch-Prozess. Ich brauchte ein Werkzeug, spuckte eine Textdifferenzdatei beim Vergleich von zwei Dateien (nicht eine zusammenfassen Ergebnisdatei). WinMerge und Beyond Compare sind zu meiner Verfügung, aber sie scheinen nichts zu produzieren, aber zusammengeführte Ergebnisse (was normalerweise ist, was ich will, aber nicht dieses Mal). Mein Regression Framework ruft diffmerge. exe und speichern Sie die resultierende Diff-Datei für eine spätere Überprüfung. Ich codierte meine ProcessStartInfo Verfolgt, dass mit dem Treten des Prozesses und warten, bis der Prozess zu beenden. Und warten warten warten. Dies hat mich lesen MSDN und graben tiefer in den Einsatz der Process-Klasse. Ich fand heraus, einige interessante Informationen, wahrscheinlich hätte offensichtlich sein sollen. Zuerst fand ich, dass manchmal laufen meine diffmerge Child Process mit verschiedenen Argumenten gearbeitet, manchmal war es nicht, was das Thema geheimnisvoll. Zweitens fand ich, dass es gut funktioniert, wenn ich didn8217t Umleitung Ausgabe. So, offensichtlich fehlte mir etwas. Ich brauchte, um tatsächlich die Prozess-API-Docs zu lesen, und so fand ich dieses Nugget: MSDN-Artikel Nach dem Finden und Lesen, dass MSDN-Artikel verstand ich. Mein Codebeispiel oben funktioniert, wenn der StdOut - oder StdError-Puffer nicht aufgefüllt wird. Aber was ich sah die StdOut Puffer füllt, wurde das Kind-Prozess auf der nächsten StdOut / stderror Schreib blockiert, wurde der übergeordnete Prozess wartet unendlich auf der Kind-Prozess zu beenden, bevor sie aus dem StdOut / stderror Puffer zu lesen. Mir schien es, dass WaitForExit Verfahren und / oder Ereignis Exited gebrochen werden / das Kind nicht Prozess zu kontrollieren Verlassen aber es war mein Code, der gebrochen war. Ich änderte den Code, um die asynchrone Methoden zu verwenden und plötzlich ging meine Probleme weg. Keine Blockierung mehr, alles funktionierte wie erwartet. Ich verwendete StringBuilders als Puffer, um die Daten zu halten, die in den Ereignissen empfangen werden. In Teil 2, Ich laufe in ein Problem mit der Process StdOut / StdError ReadLine-Implementierungen um meine spezifischen Bedürfnisse, gehe ich, wie ich das Problem gelöst haben. Lesen Sie, was MSDN darüber sagt: Die WaitForExit () () () - Überlastung wird verwendet Um den aktuellen Thread zu warten, bis der zugehörige Prozess beendet wird. Diese Methode weist die Prozesskomponente an, eine unbegrenzte Zeitspanne zu warten, bis der Prozess beendet wird. Dies kann dazu führen, dass eine Anwendung nicht mehr reagiert. Wenn Sie beispielsweise 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 Handhabung von asynchronen Ereignissen für die umgeleitete Standardausgabe. Sie sollten diese Überladung nach einem Aufruf der WaitForExit (Int32) - Uberladung verwenden, wenn die Standardausgabe auf asynchrone Ereignisbehandlungsroutinen umgeleitet wurde. Das ist natürlich für. NET. Was macht Sie denken, dass es nicht warten, bis die Note-Prozess zu beenden Was sind die Anzeichen dafür, was ist der Beweis Freitag, Februar 20, 2009 8.13 PM Nicht sicher, ob dies kürzlich geändert hat, aber zurück in den Tag Anwendungen auf 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, da das nächste 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 ist es nur Spekulation auf knowlegde der alten Versionen von Windows Mobile basiert. Freitag, den 20. Februar 2009 um 11:03 Uhr Id wie zu stoßen diese Frage auf. Im auf Windows Mobile 6 Standard und Im versuchen, eine Browser-Instanz spawn. Id wie zu warten, bis der Benutzer den Browser schließt. Aber WaitForExit kommt 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 (quotNow der Browser sollte closedquot sein) Was sollte der richtige Weg, um die erwarteten Resuts erhalten werden, wo das Symbol ist. Symbol. AlexB Dienstag, 9. Juni 2009 09:58 Ich sehe 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 8.35 Uhr Außer, dass Sie nicht erhalten dann ein Prozess-Objekt, das Sie können benutzen. MyProc. WaitForExit () Es ist immer noch unverzüglich zurückgegeben, wenn Sie versuchen, Dim myProc als neuen Prozess () myProc Process. Start (quotiexplorequot, quotfinance. yahoo/q/hpsquot Symbol) Mittwoch, 2. September 2009 20.48 Uhr Problem ist, dass Sie nicht eine neue Instanz von iexplore. exe starten. Sie erstellen lediglich ein neues Fenster zum bestehenden Prozess. Meine Vermutung ist, iexplore. exe startet, sieht eine vorhergehende Instanz und kommuniziert mit der vorherigen Instanz, so dass es das neue Fenster öffnet, und dann diese Instanz, die Sie sofort beendet verlassen. Das Verhalten ist also richtig und zu erwarten. Blog. voidnish Mittwoch, den 2. September 2009 um 20:52 Uhr Microsoft führt eine Online-Umfrage durch, um Ihre Meinung über die Msdn-Website zu verstehen. Wenn Sie sich für eine Teilnahme entscheiden, wird Ihnen die Online-Umfrage präsentiert, wenn Sie die Msdn-Website verlassen. Möchten Sie teilnehmen
Forex martingale Experten Ratschläge Beat the forex dealer pdf kostenloser download Messe sprechende forex 1697 piraten gnadenlos terrorisieren die sieben seen, trotz der englischen embassys versucht, sie zu stoppen. Doch inmitten all dieser fülligen, abenteuerdürstigen Kutteln hebt sich ein Pirat hervor. Emma wurde von Piraten getötet. Jetzt achtzehn Jahre alt und der Kapitän ihres eigenen Schiffes, Emmas eigenen Abenteuer sind spannend, aber unorthodox. Mit Heflan, einem exzentrischen Botschafts-Sheriff, der ständig auf ihrem Weg ist, scheint es schlimmer zu werden, als sein Neffe Ben auf dem Schiff liegt. Und als eine mysteriöse Schatzkarte gefunden wird, vom Himmel zu einem Schatz führt, wird Emma Lage sein, die Gefahren zu entkommen einer pirate. while Verlieben Kommentare von Lesern ist Caroline Sunshine (Tinka auf Disneys Shake It Up) Ein Seitenwender, Gefüllt mit all dem Abenteuer, Charisma und Romantik ein modernes Abenteuer Roman benötigt Junge Schriftstellerin Rachel Hemsley...
Comments
Post a Comment