Process.WaitForExit Methode

Definition

Legt die Zeitspanne für das Warten auf die Beendigung des zugeordneten Prozesses fest und blockiert den aktuellen Ausführungsthread, bis die Zeit verstrichen oder der Prozess beendet ist. Verwenden Sie das Ereignis Exited, um ein Blockieren des aktuellen Threads zu verhindern.

Codebeispiele finden Sie auf den Referenzseiten zu den Eigenschaften StandardError und ExitCode.

Überlädt

WaitForExit()

Weist die Process-Komponente an, unbestimmte Zeit zu warten, bis der zugeordnete Prozess beendet wird.

WaitForExit(Int32)

Weist die Process-Komponente an, für die Dauer von angegebenen Millisekunden zu warten, bis der zugeordnete Prozess beendet wird.

WaitForExit(TimeSpan)

Weist die Prozesskomponente an, die angegebene Zeit zu warten, bis der zugeordnete Prozess beendet wird.

WaitForExit()

Quelle:
Process.cs
Quelle:
Process.cs
Quelle:
Process.cs

Weist die Process-Komponente an, unbestimmte Zeit zu warten, bis der zugeordnete Prozess beendet wird.

public:
 void WaitForExit();
public void WaitForExit ();
member this.WaitForExit : unit -> unit
Public Sub WaitForExit ()

Ausnahmen

Auf die Wait-Einstellung konnte nicht zugegriffen werden.

Es wurde kein Prozess Id festgelegt, und ein Handle, aus dem die Id-Eigenschaft bestimmt werden kann, ist nicht vorhanden.

- oder -

Diesem Process -Objekt ist kein Prozess zugeordnet.

- oder -

Sie versuchen, WaitForExit() für einen Prozess aufzurufen, der auf einem Remotecomputer ausgeführt wird. Diese Methode ist nur für Prozesse verfügbar, die auf dem lokalen Computer ausgeführt werden.

Beispiele

Weitere Informationen finden Sie im Abschnitt Hinweise auf der StandardError Eigenschaftenreferenzseite.

Hinweise

WaitForExit() bewirkt, dass der aktuelle Thread wartet, bis der zugeordnete Prozess beendet wird. Sie sollte aufgerufen werden, nachdem alle anderen Methoden für den Prozess aufgerufen wurden. Verwenden Sie das Ereignis Exited, um ein Blockieren des aktuellen Threads zu verhindern.

Diese Methode weist die Process Komponente an, unendlich lange zu warten, bis der Prozess und die Ereignishandler beendet werden. Dies kann dazu führen, dass eine Anwendung nicht mehr reagiert. Wenn Sie beispielsweise einen Prozess aufrufen CloseMainWindow , der über eine Benutzeroberfläche verfügt, wird die Anforderung an das Betriebssystem, den zugeordneten Prozess zu beenden, möglicherweise nicht verarbeitet, wenn der Prozess so geschrieben wird, dass er niemals in seine Nachrichtenschleife eintritt.

Hinweis

In den .NET Framework 3.5 und früheren Versionen wartete MaxValue die WaitForExit() Überladung nicht unbegrenzt auf Millisekunden (etwa 24 Tage). Außerdem haben frühere Versionen nicht darauf gewartet, dass die Ereignishandler beendet wurden, wenn die vollständige MaxValue Zeit erreicht wurde.

Diese Überladung stellt sicher, dass die gesamte Verarbeitung abgeschlossen wurde, einschließlich der Behandlung asynchroner Ereignisse für die umgeleitete Standardausgabe. Sie sollten diese Überladung nach einem Aufruf der Überladung verwenden, wenn die WaitForExit(Int32) Standardausgabe an asynchrone Ereignishandler umgeleitet wurde.

Wenn ein zugeordneter Prozess beendet wird (d. h. wenn er vom Betriebssystem durch eine normale oder ungewöhnliche Beendigung heruntergefahren wird), speichert das System administrative Informationen über den Prozess und kehrt an die Komponente zurück, die aufgerufen WaitForExit()hat. Die Process Komponente kann dann auf die Informationen zugreifen, einschließlich der ExitTime, indem sie den Handle bis zum beendeten Prozess verwendet.

Da der zugeordnete Prozess beendet wurde, verweist die Handle -Eigenschaft der Komponente nicht mehr auf eine vorhandene Prozessressource. Stattdessen kann das Handle nur für den Zugriff auf die Informationen des Betriebssystems über die Prozessressource verwendet werden. Das System kennt Handles für beendete Prozesse, die nicht von Process Komponenten freigegeben wurden. Daher behält es die ExitTime Informationen und Handle im Arbeitsspeicher bei, bis die Process Komponente die Ressourcen explizit freigibt. Aus diesem Grund rufen Sie jedes Mal, wenn Sie für eine instance aufrufenStart, aufClose, wenn der zugeordnete Prozess beendet wurde und Sie keine administrativen Informationen mehr dazu Process benötigen. Close Gibt den für den beendeten Prozess belegten Arbeitsspeicher frei.

Weitere Informationen

Gilt für:

WaitForExit(Int32)

Quelle:
Process.cs
Quelle:
Process.cs
Quelle:
Process.cs

Weist die Process-Komponente an, für die Dauer von angegebenen Millisekunden zu warten, bis der zugeordnete Prozess beendet wird.

public:
 bool WaitForExit(int milliseconds);
public bool WaitForExit (int milliseconds);
member this.WaitForExit : int -> bool
Public Function WaitForExit (milliseconds As Integer) As Boolean

Parameter

milliseconds
Int32

Die Zeitspanne in Millisekunden, die auf die Beendigung des zugeordneten Prozesses gewartet werden soll. Der Wert 0 gibt eine sofortige Rückgabe an, der Wert -1 gibt eine unendliche Wartezeit an.

Gibt zurück

true, wenn der zugeordnete Prozess beendet wurde, andernfalls false.

Ausnahmen

Auf die Wait-Einstellung konnte nicht zugegriffen werden.

Es wurde kein Prozess Id festgelegt, und ein Handle, aus dem die Id-Eigenschaft bestimmt werden kann, ist nicht vorhanden.

- oder -

Diesem Process -Objekt ist kein Prozess zugeordnet.

- oder -

Sie versuchen, WaitForExit(Int32) für einen Prozess aufzurufen, der auf einem Remotecomputer ausgeführt wird. Diese Methode ist nur für Prozesse verfügbar, die auf dem lokalen Computer ausgeführt werden.

milliseconds ist eine negative Zahl, jedoch nicht -1, was einen unbeschränkten Timeout darstellt.

Beispiele

Sehen Sie sich das Codebeispiel für die -Eigenschaft an ExitCode .

Hinweise

WaitForExit(Int32) bewirkt, dass der aktuelle Thread wartet, bis der zugeordnete Prozess beendet wird. Sie sollte aufgerufen werden, nachdem alle anderen Methoden für den Prozess aufgerufen wurden. Verwenden Sie das Ereignis Exited, um ein Blockieren des aktuellen Threads zu verhindern.

Diese Methode weist die Process Komponente an, eine begrenzte Zeit zu warten, bis der Prozess beendet wird. Wenn der zugeordnete Prozess am Ende des Intervalls nicht beendet wird, weil die Beendigungsanforderung abgelehnt wird, false wird an die aufrufende Prozedur zurückgegeben. Sie können für millisecondsangebenTimeout.Infinite, und Process.WaitForExit(Int32) verhalten sich genauso wie die WaitForExit() Überladung. Wenn Sie 0 (null) an die -Methode übergeben, wird nur zurückgegeben true , wenn der Prozess bereits beendet wurde. Andernfalls wird sofort zurückgegeben false.

Hinweis

In der .NET Framework Version 3.5 und früherer Versionen wartete MaxValue die WaitForExit(Int32) Überladung bei milliseconds -1 auf Millisekunden (ca. 24 Tage) und nicht unbegrenzt.

Wenn die Standardausgabe an asynchrone Ereignishandler umgeleitet wurde, ist es möglich, dass die Ausgabeverarbeitung nicht abgeschlossen ist, wenn diese Methode zurückgegeben wird. Um sicherzustellen, dass die asynchrone Ereignisbehandlung abgeschlossen wurde, rufen Sie die Überladung auf, die WaitForExit() keinen Parameter akzeptiert, nachdem Sie einen true von dieser Überladung empfangen haben. Legen SynchronizingObject Sie die -Eigenschaft fest, um sicherzustellen, dass das Exited Ereignis in Windows Forms Anwendungen ordnungsgemäß behandelt wird.

Wenn ein zugeordneter Prozess beendet wird (wird vom Betriebssystem durch eine normale oder ungewöhnliche Beendigung heruntergefahren), speichert das System administrative Informationen zum Prozess und kehrt an die Komponente zurück, die aufgerufen WaitForExit(Int32)hat. Die Process Komponente kann dann auf die Informationen zugreifen, einschließlich der ExitTime, indem sie den Handle bis zum beendeten Prozess verwendet.

Da der zugeordnete Prozess beendet wurde, verweist die Handle -Eigenschaft der Komponente nicht mehr auf eine vorhandene Prozessressource. Stattdessen kann das Handle nur für den Zugriff auf die Informationen des Betriebssystems über die Prozessressource verwendet werden. Das System kennt Handles für beendete Prozesse, die nicht von Process Komponenten freigegeben wurden. Daher behält es die ExitTime Informationen und Handle im Arbeitsspeicher bei, bis die Process Komponente die Ressourcen explizit freigibt. Aus diesem Grund rufen Sie jedes Mal, wenn Sie für eine instance aufrufenStart, aufClose, wenn der zugeordnete Prozess beendet wurde und Sie keine administrativen Informationen mehr dazu Process benötigen. Close Gibt den für den beendeten Prozess belegten Arbeitsspeicher frei.

Weitere Informationen

Gilt für:

WaitForExit(TimeSpan)

Quelle:
Process.cs
Quelle:
Process.cs
Quelle:
Process.cs

Weist die Prozesskomponente an, die angegebene Zeit zu warten, bis der zugeordnete Prozess beendet wird.

public:
 bool WaitForExit(TimeSpan timeout);
public bool WaitForExit (TimeSpan timeout);
member this.WaitForExit : TimeSpan -> bool
Public Function WaitForExit (timeout As TimeSpan) As Boolean

Parameter

timeout
TimeSpan

Die Zeitspanne, die auf das Beenden des zugeordneten Prozesses gewartet werden soll.

Gibt zurück

true, wenn der zugeordnete Prozess beendet wurde, andernfalls false.

Hinweise

Weitere Informationen finden Sie WaitForExit(Int32) unter Hinweise.

Gilt für: