Process.WaitForExit Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Nastaví dobu čekání na ukončení přidruženého procesu a zablokuje aktuální vlákno provádění, dokud čas uplynul nebo se proces ukončil. Pokud chcete zabránit blokování aktuálního vlákna, použijte Exited událost.
Příklady kódu najdete na stránkách odkazů na StandardError vlastnosti a na stránky s odkazem na ExitCode vlastnost.
Přetížení
| Name | Description |
|---|---|
| WaitForExit() |
Dává komponentě Process pokyn, aby po neomezenou dobu čekal, než se přidružený proces ukončí. |
| WaitForExit(Int32) |
Dává komponentě Process pokyn, aby počkala zadaný počet milisekund, než se přidružený proces ukončí. |
| WaitForExit(TimeSpan) |
Dává komponentě Process pokyn, aby počkala na ukončení přidruženého procesu v zadaném čase. |
WaitForExit()
- Zdroj:
- Process.cs
- Zdroj:
- Process.cs
- Zdroj:
- Process.cs
- Zdroj:
- Process.cs
- Zdroj:
- Process.cs
Dává komponentě Process pokyn, aby po neomezenou dobu čekal, než se přidružený proces ukončí.
public:
void WaitForExit();
public void WaitForExit();
member this.WaitForExit : unit -> unit
Public Sub WaitForExit ()
Výjimky
Nelze získat přístup k nastavení čekání.
Nebyl nastaven žádný proces Id a vlastnost Handle , ze které Id lze určit, neexistuje.
nebo
K tomuto Process objektu není přidružený žádný proces.
nebo
Pokoušíte se volat WaitForExit() proces, který běží na vzdáleném počítači. Tato metoda je k dispozici pouze pro procesy spuštěné v místním počítači.
Příklady
Viz část Poznámky na stránce odkazu na StandardError vlastnost.
Poznámky
WaitForExit() provede aktuální vlákno čekání na ukončení přidruženého procesu. Měla by být volána po zavolání všech ostatních metod v procesu. Pokud chcete zabránit blokování aktuálního vlákna, použijte Exited událost.
Tato metoda dává komponentě Process pokyn, aby počkala nekonečnou dobu, než se obslužné rutiny procesu a obslužné rutiny událostí ukončí. To může způsobit, že aplikace přestane reagovat. Pokud například voláte CloseMainWindow proces, který má uživatelské rozhraní, nemusí být požadavek na ukončení přidruženého procesu zpracován, pokud je proces zapsán tak, aby nikdy nezadávejte smyčku zprávy.
Poznámka:
V rozhraní .NET Framework 3.5 a starších verzích WaitForExit() přetížení čekalo na MaxValue milisekundy (přibližně 24 dnů), ne neomezeně dlouho. Předchozí verze také nečekaly na ukončení obslužných rutin událostí, pokud bylo dosaženo úplného MaxValue času.
Toto přetížení zajišťuje dokončení veškerého zpracování, včetně zpracování asynchronních událostí pro přesměrovaný standardní výstup. Toto přetížení byste měli použít po volání WaitForExit(Int32) přetížení, pokud byl standardní výstup přesměrován na asynchronní obslužné rutiny událostí.
Když se přidružený proces ukončí (tj. když operační systém vypne normálním nebo neobvyklým ukončením), systém uloží informace o procesu správy a vrátí se do komponenty, která volala WaitForExit(). Komponenta Process pak může získat přístup k informacím, které zahrnují ExitTime, pomocí Handle ukončeného procesu.
Vzhledem k tomu, že přidružený proces byl ukončen, Handle vlastnost komponenty již odkazuje na existující prostředek procesu. Místo toho lze popisovač použít pouze pro přístup k informacím operačního systému o prostředku procesu. Systém si je vědom popisovačů ukončovaných procesů, které nebyly uvolněny komponentami Process , takže uchovává ExitTime informace v Handle paměti, dokud Process komponenta prostředky výslovně neuvolní. Z tohoto důvodu kdykoli zavoláte Start na Process instanci, zavoláte Close , když se přidružený proces ukončí a už o něm nepotřebujete žádné informace o správě. Close uvolní paměť přidělenou ukončeným procesům.
Viz také
Platí pro
WaitForExit(Int32)
- Zdroj:
- Process.cs
- Zdroj:
- Process.cs
- Zdroj:
- Process.cs
- Zdroj:
- Process.cs
- Zdroj:
- Process.cs
Dává komponentě Process pokyn, aby počkala zadaný počet milisekund, než se přidružený proces ukončí.
public:
bool WaitForExit(int milliseconds);
public bool WaitForExit(int milliseconds);
member this.WaitForExit : int -> bool
Public Function WaitForExit (milliseconds As Integer) As Boolean
Parametry
- milliseconds
- Int32
Doba, po kterou se v milisekundách čeká na ukončení přidruženého procesu. Hodnota 0 určuje okamžitý návrat a hodnota -1 určuje nekonečné čekání.
Návraty
truepokud se přidružený proces ukončil; v opačném případě . false
Výjimky
Nelze získat přístup k nastavení čekání.
Nebyl nastaven žádný proces Id a vlastnost Handle , ze které Id lze určit, neexistuje.
nebo
K tomuto Process objektu není přidružený žádný proces.
nebo
Pokoušíte se volat WaitForExit(Int32) proces, který běží na vzdáleném počítači. Tato metoda je k dispozici pouze pro procesy spuštěné v místním počítači.
milliseconds je záporné číslo jiné než -1, což představuje nekonečný časový limit.
Příklady
Podívejte se na příklad kódu pro ExitCode vlastnost.
Poznámky
WaitForExit(Int32) provede aktuální vlákno čekání na ukončení přidruženého procesu. Měla by být volána po zavolání všech ostatních metod v procesu. Pokud chcete zabránit blokování aktuálního vlákna, použijte Exited událost.
Tato metoda dává komponentě pokyn Process , aby počkala na konečný čas, než se proces ukončí. Pokud se přidružený proces neodejde na konci intervalu, protože požadavek na ukončení je odepřen, false vrátí se volající procedurě. Můžete zadat Timeout.Infinite pro millisecondsa Process.WaitForExit(Int32) bude se chovat stejně jako WaitForExit() přetížení. Pokud metodě předáte hodnotu 0 (nula), vrátí true se pouze v případě, že proces již byl ukončen; jinak okamžitě vrátí false.
Poznámka:
V rozhraní .NET Framework 3.5 a starších verzích , pokud milliseconds byl -1, WaitForExit(Int32) přetížení čekalo na MaxValue milisekundy (přibližně 24 dní), ne neomezeně dlouho.
Pokud je standardní výstup přesměrován na asynchronní obslužné rutiny událostí, je možné, že při vrácení této metody se zpracování výstupu nedokončí. Chcete-li zajistit, aby bylo dokončeno asynchronní zpracování událostí, zavolejte WaitForExit() přetížení, které po přijetí true tohoto přetížení nepřijímá žádný parametr. Chcete-li zajistit správné Exited zpracování události v aplikacích Windows Forms, nastavte SynchronizingObject vlastnost.
Když se přidružený proces ukončí (vypne operační systém pomocí normálního nebo neobvyklého ukončení), systém uloží informace o procesu správy a vrátí se do komponenty, která volala WaitForExit(Int32). Komponenta Process pak může získat přístup k informacím, které zahrnují ExitTime, pomocí Handle ukončeného procesu.
Vzhledem k tomu, že přidružený proces byl ukončen, Handle vlastnost komponenty již odkazuje na existující prostředek procesu. Místo toho lze popisovač použít pouze pro přístup k informacím operačního systému o prostředku procesu. Systém si je vědom popisovačů ukončovaných procesů, které nebyly uvolněny komponentami Process , takže uchovává ExitTime informace v Handle paměti, dokud Process komponenta prostředky výslovně neuvolní. Z tohoto důvodu kdykoli zavoláte Start na Process instanci, zavoláte Close , když se přidružený proces ukončí a už o něm nepotřebujete žádné informace o správě. Close uvolní paměť přidělenou ukončeným procesům.
Viz také
Platí pro
WaitForExit(TimeSpan)
- Zdroj:
- Process.cs
- Zdroj:
- Process.cs
- Zdroj:
- Process.cs
- Zdroj:
- Process.cs
- Zdroj:
- Process.cs
Dává komponentě Process pokyn, aby počkala na ukončení přidruženého procesu v zadaném čase.
public:
bool WaitForExit(TimeSpan timeout);
public bool WaitForExit(TimeSpan timeout);
member this.WaitForExit : TimeSpan -> bool
Public Function WaitForExit (timeout As TimeSpan) As Boolean
Parametry
- timeout
- TimeSpan
Doba čekání na ukončení přidruženého procesu.
Návraty
truepokud se přidružený proces ukončil; v opačném případě . false
Poznámky
Viz WaitForExit(Int32) poznámky.