Freigeben über


Process.WaitForExit Methode

Definition

Legt den Zeitraum fest, der auf das Beenden des zugeordneten Prozesses wartet, und blockiert den aktuellen Ausführungsthread, bis die Zeit verstrichen ist oder der Prozess beendet wurde. Um das Blockieren des aktuellen Threads zu vermeiden, verwenden Sie das Exited Ereignis.

Codebeispiele finden Sie auf den StandardError Referenzseiten der ExitCode Eigenschaft.

Überlädt

Name Beschreibung
WaitForExit()

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

WaitForExit(Int32)

Weist die Process Komponente an, die angegebene Anzahl von Millisekunden zu warten, damit der zugeordnete Prozess beendet wird.

WaitForExit(TimeSpan)

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

WaitForExit()

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

Weist die Process Komponente an, auf 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 Warteeinstellung konnte nicht zugegriffen werden.

Es wurde kein Prozess Id festgelegt, und eine Handle Eigenschaft, aus der die Id Eigenschaft bestimmt werden kann, ist nicht vorhanden.

- oder -

Diesem Process Objekt ist kein Prozess zugeordnet.

- oder -

Sie versuchen, einen Prozess aufzurufen WaitForExit() , 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" 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. Um das Blockieren des aktuellen Threads zu vermeiden, verwenden Sie das Exited Ereignis.

Diese Methode weist die Process Komponente an, eine unendliche Zeit zu warten, bis der Prozess und die Ereignishandler beendet werden. Dies kann dazu führen, dass eine Anwendung nicht mehr reagiert. Wenn Sie z. B. einen Prozess aufrufen CloseMainWindow , der über eine Benutzeroberfläche verfügt, wird die Anforderung an das Betriebssystem zum Beenden des zugehörigen Prozesses möglicherweise nicht behandelt, wenn der Prozess geschrieben wird, um die Meldungsschleife niemals einzugeben.

Hinweis

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

Diese Überladung stellt sicher, dass alle Verarbeitung abgeschlossen wurde, einschließlich der Behandlung asynchroner Ereignisse für 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 über eine normale oder abnorme Beendigung heruntergefahren wird), speichert das System administrative Informationen zum Prozess und kehrt zu der Komponente zurück, die aufgerufen WaitForExit()wurde. Die Process Komponente kann dann mithilfe des Handle beendeten Prozesses auf die Informationen zugreifen, die die ExitTimeInformationen enthalten.

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, sodass die ExitTime Informationen und Handle Informationen im Arbeitsspeicher erhalten bleiben, bis die Process Komponente die Ressourcen speziell freigibt. Aus diesem Grund rufen Sie jedes Mal, wenn Sie eine Process Instanz aufrufenStart, aufClose, wenn der zugeordnete Prozess beendet wurde, und Sie benötigen keine administrativen Informationen mehr darüber. Close gibt den Speicher frei, der dem beendeten Prozess zugeordnet ist.

Weitere Informationen

Gilt für:

WaitForExit(Int32)

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

Weist die Process Komponente an, die angegebene Anzahl von Millisekunden zu warten, damit 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

Der Zeitraum in Millisekunden, bis der zugeordnete Prozess beendet wird. Ein Wert von 0 gibt eine sofortige Rückgabe an, und ein Wert von -1 gibt eine unendliche Wartezeit an.

Gibt zurück

truewenn der zugeordnete Prozess beendet wurde; andernfalls . false

Ausnahmen

Auf die Warteeinstellung konnte nicht zugegriffen werden.

Es wurde kein Prozess Id festgelegt, und eine Handle Eigenschaft, aus der die Id Eigenschaft bestimmt werden kann, ist nicht vorhanden.

- oder -

Diesem Process Objekt ist kein Prozess zugeordnet.

- oder -

Sie versuchen, einen Prozess aufzurufen WaitForExit(Int32) , 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 andere negative Zahl als -1, die ein unendliches Timeout darstellt.

Beispiele

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

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. Um das Blockieren des aktuellen Threads zu vermeiden, verwenden Sie das Exited Ereignis.

Diese Methode weist die Process Komponente an, eine begrenzte Zeitspanne zu warten, bis der Prozess beendet wird. Wenn der zugeordnete Prozess nicht am Ende des Intervalls beendet wird, da die Anforderung zum Beenden verweigert wird, false wird an die aufrufende Prozedur zurückgegeben. Sie können Timeout.Infinite angeben, für millisecondsund Process.WaitForExit(Int32) verhalten sich genauso wie die WaitForExit() Überladung. Wenn Sie 0 (Null) an die Methode übergeben, wird sie nur zurückgegeben true , wenn der Prozess bereits beendet wurde; andernfalls wird er sofort zurückgegeben false.

Hinweis

In den .NET Framework 3.5- und früheren Versionen( wenn milliseconds -1) wartete die WaitForExit(Int32) Überladung auf MaxValue Millisekunden (ca. 24 Tage), 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() nach dem Empfang einer true Überladung keinen Parameter akzeptiert. Um sicherzustellen, dass das Exited Ereignis in Windows Forms-Anwendungen ordnungsgemäß behandelt wird, legen Sie die SynchronizingObject Eigenschaft fest.

Wenn ein zugeordneter Prozess beendet wird (vom Betriebssystem über eine normale oder ungewöhnliche Beendigung heruntergefahren wird), speichert das System administrative Informationen zum Prozess und kehrt zu der Komponente zurück, die aufgerufen WaitForExit(Int32)wurde. Die Process Komponente kann dann mithilfe des Handle beendeten Prozesses auf die Informationen zugreifen, die die ExitTimeInformationen enthalten.

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, sodass die ExitTime Informationen und Handle Informationen im Arbeitsspeicher erhalten bleiben, bis die Process Komponente die Ressourcen speziell freigibt. Aus diesem Grund rufen Sie jedes Mal, wenn Sie eine Process Instanz aufrufenStart, aufClose, wenn der zugeordnete Prozess beendet wurde, und Sie benötigen keine administrativen Informationen mehr darüber. Close gibt den Speicher frei, der dem beendeten Prozess zugeordnet ist.

Weitere Informationen

Gilt für:

WaitForExit(TimeSpan)

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

Weist die Prozesskomponente an, die angegebene Zeitspanne 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 wartet.

Gibt zurück

truewenn der zugeordnete Prozess beendet wurde; andernfalls . false

Hinweise

Siehe WaitForExit(Int32) Anmerkungen.

Gilt für: