Lassen Sie uns lesen, 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 unendliche Zeit zu warten, bis der Prozess beendet wird. Dies kann dazu führen, dass eine Anwendung nicht mehr reagiert. Wenn Sie zum Beispiel 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 Behandlung von asynchronen Ereignissen für umgeleitete Standardausgabe. Sie sollten diese Überladung nach einem Aufruf der WaitForExit (Int32) Überlast verwenden, wenn die Standardausgabe an asynchrone Ereignishandler umgeleitet wurde. Das ist natürlich für Was macht Sie denken, dass es nicht warten, bis die Note-Prozess zu beenden Was sind die Zeichen dafür, was ist der Beweis Freitag, 20. Februar 2009 20.13 Nicht sicher, ob dies geändert hat, aber vor kurzem wieder in den Tag Anwendungen auf dem 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, seit dem nächsten 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 wieder ist es nur Spekulation auf der Grundlage von Knowlegde von alten Versionen von Windows Mobile. Freitag, den 20. Februar 2009 um 11:03 Uhr Id mag diese Frage aufheben. Im auf Windows Mobile 6 Standard und ich versuche, eine Browser-Instanz zu erzeugen. Ich möchte warten, bis der Benutzer den Browser schließt. Aber WaitForExit kehrt 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 ("Now der Browser sollte closedquot sein) Was sollte der richtige Weg, um die erwarteten Resuts erhalten werden, wenn das Symbol ist. Symbol. AlexB Dienstag, 09. Juni 2009 um 9:58 Uhr Im sehen 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 08.35 Uhr Außer, dass Sie nicht erhalten dann ein Prozess-Objekt, das Sie können benutzen. MyProc. WaitForExit () Es wird immer noch sofort zurückgegeben, wenn Sie versuchen, Dim myProc als neuen Prozess () myProc Process. Start (quotiexplorequot, quotfinance. yahooqhpsquot Symbol) Mittwoch, September 02, 2009 8:48 PM Problem ist, dass du keine neue Instanz von iexplore. exe startet. Sie erstellen nur ein neues Fenster zum bestehenden Prozess. Meine Vermutung ist iexplore. exe startet, sieht eine vorherige Instanz und kommuniziert mit der vorherigen Instanz, so dass es öffnet sich das neue Fenster, und dann diese Instanz Sie begann sofort beendet. So ist das Verhalten richtig und zu erwarten. Blog. voidnish Mittwoch, September 02, 2009 8:52 PM 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 teilnehmenBitte können Sie mit einem Prozessproblem helfen, das ich erlebe und hoffentlich einige Fragen über die Methode beantworte, die ich verwende. Ich habe einen Antrag, der einen anderen anruft, wartet darauf, dass er fertig ist, dann mit seinem Job weiter. Dies bei den großen Werken ok, aber manchmal gefriert es entweder das Gerät (erfordert einen Soft Reset) oder das Gerät weich zurückgesetzt sowieso. Der Pseudocode lautet: Dim ExitLoop als Boolean Dim p als neuer Prozess Etwas Fairly Log Running 1) Warten Sie kurz nach Application. Exit in Application2 oder kehrt es zurück, nachdem die Meldung Pumpe beendet ist. 2) Warten Sie, bis die Meldepumpe fertig ist. Oder wird die Rückkehr sofort schließen und p. dispose versuchen, den Prozess zu entsorgen, während es noch schließt. 3) Sollte ich nicht mit waitforexit und versuchen Sie etwas wie die folgenden: 4) Warum sollte ein Windows Mobile 6 Gerät selbst perfom ein Soft-Reset. Könnte es aus dem Gedächtnis sein .. Dim ExitLoop als Boolean Wenn p. HasExited Dann ExitLoop True Loop während nicht ExitLoop Ich habe verschiedene Implementierungen ausprobiert, aber noch nicht 100 Erfolg erreicht Nach weiteren Tests habe ich folgendes gefunden: MSDN berichtet, dass ich nicht mit process. dispose verwenden sollte, vermutlich wird dies nach process. close aufgerufen und ist auf seinem eigenen Thread aufgerufen. Trotz der Tatsache, dass es eine process. waitforexit alle Microsoft-Beispiele verwenden Sie es nicht begünstigen die Methode unten. Thread. Sleep (für ein bisschen) Schleife, während nicht process. hasexited weitermachen mit Ihrer Anwendung habe ich beschlossen, CERunAppAtTime als dieses ganze System verwenden. diagnostik Übung hat mir mehr Entwicklungszeit gekostet, als es hätte tun müssen. Es wäre hilfreich für andere und die Compact Framework-Entwicklung, wenn das Verhalten, das ich erlebt habe, erklärt werden kann.
Comments
Post a Comment