Saturday 7 January 2017

Waitforexit Process C # Beispielprogramme

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. Außerdem, wie M. Babcock vorgeschlagen, verschieben Sie die loaddPB-Methode aus dem UI-Thread, und stellen Sie sicher, um das Laden Teil in einem Semaphor zu wickeln, so wird nur eine einzelne Datei geladen zu einem Zeitpunkt geladen und die Benutzeroberfläche kann weiterhin tun, was sie benötigt tun. Ndash SPFiredrake Seien Sie gewarnt, dass dies etwas quothackishquot, dass you39re immer noch die UI-Thread, aber you39re manuell pumpen die Ereignisse durch die Message-Warteschlange. 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 Ich habe eine Situation, wo ich eine Datei ausführen möchten, und löschen Sie dann die ausführbare Datei, wenn die Ausführung abgeschlossen ist. Ich benutze System. Diagnostics. Process. Start (), um die Datei auszuführen, und verwenden Sie. WaitForExit (), um zu warten, bis der Prozess abgeschlossen ist. Dann verwende ich File. Delete (Dateiname), um die ausführbare Datei zu löschen. Das Problem ist, dass manchmal File. Delete mit dem folgenden Fehler fehlschlägt: Das führt mich zu glauben, dass irgendwie der Prozess noch lebt und die ausführbare Datei sperrt, auch nachdem der. WaitForExit () - Aufruf zurückgegeben wird. Ich habe andere Threads im Netz gefunden, die das gleiche Verhalten beschreiben, aber ich habe keine gefunden, die mit einer vernünftigen Erklärung oder Lösung des Problems abschließen, außer Anregungen, einen Sleep (n) nach dem WaitForExit () zu setzen. Beispiele: Hier ist ein Beispielprogramm, das das Problem für mich reproduziert. Ich habe auf Windows XP und Windows 7 getestet, und sie beide schließlich scheitern an einem gewissen Punkt mit dem gleichen Fehler. Beachten Sie auch, dass die ss. exe-ausführbare Datei eine einfache einfache Hello Worldquot-Konsolenanwendung ist. Und die Ausgabe in der Regel sieht so etwas aus (mit unterschiedlicher Anzahl von Iterationen vor dem Absturz auftritt): Irgendwelche Ideen, warum dies geschieht, und wenn es einige Fix für diese (außer Putting Schlaf in den Code) Freitag, 8. Januar 2010 3 : 40 PM Der Grund ist, dass, obwohl der Prozess abgeschlossen ist, kann es ein paar Millisekunden für das Betriebssystem bis zum Ende der Zerstörung dauern. Sein ein multi-tasking OS schließlich, sein Versuchen, jeder zur gleichen Zeit instandzuhalten. Unglücklicherweise gibt es keine Möglichkeit zu wissen, wann die Datei nicht mehr gesperrt ist (voraussichtlich). Wenn Sie WaitForExit, erstellen Sie ein Sperrobjekt auf dem Prozessobjekt. Das Prozessobjekt kann nicht zerstört werden, bis die Sperre freigegeben wird und Sie können nicht auf etwas warten, das nicht vorhanden ist (Huhn und Eiart von Ausgabe). Also die einzige vernünftige Sache, die Sie tun können, ist immer versuchen, etwas wie: Marked als Antwort von Samuel Stanojevic Freitag, 8. Januar 2010 16.20 Uhr Redigiert von Tergiver Freitag, 8. Januar 2010 16.20 Uhr geändert, um bool, Endlosschleife Fix Freitag, 08. Januar 2010 16:15 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


No comments:

Post a Comment