Process.WaitForExit Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Ustawia okres oczekiwania na zakończenie skojarzonego procesu i blokuje bieżący wątek wykonywania do czasu upływu czasu lub zakończenia procesu. Aby uniknąć blokowania bieżącego wątku Exited , użyj zdarzenia .
Przykłady kodu można znaleźć na StandardError stronach referencyjnych ExitCode właściwości i .
Przeciążenia
WaitForExit() |
Nakazuje Process składnikowi oczekiwanie na zakończenie skojarzonego procesu przez czas nieokreślony. |
WaitForExit(Int32) |
Nakazuje Process składnikowi oczekiwanie określonej liczby milisekund na zakończenie skojarzonego procesu. |
WaitForExit(TimeSpan) |
Instruuje składnik Procesu, aby poczekał określony czas na zakończenie skojarzonego procesu. |
WaitForExit()
- Źródło:
- Process.cs
- Źródło:
- Process.cs
- Źródło:
- Process.cs
Nakazuje Process składnikowi oczekiwanie na zakończenie skojarzonego procesu przez czas nieokreślony.
public:
void WaitForExit();
public void WaitForExit ();
member this.WaitForExit : unit -> unit
Public Sub WaitForExit ()
Wyjątki
Nie można uzyskać dostępu do ustawienia oczekiwania.
Nie ustawiono żadnego procesu Id , Handle a właściwość, z której Id można określić, nie istnieje.
-lub-
Brak procesu skojarzonego z tym Process obiektem.
-lub-
Próbujesz wywołać WaitForExit() proces uruchomiony na komputerze zdalnym. Ta metoda jest dostępna tylko w przypadku procesów uruchomionych na komputerze lokalnym.
Przykłady
Zobacz sekcję Uwagi na StandardError stronie odwołania do właściwości.
Uwagi
WaitForExit() Sprawia, że bieżący wątek czeka na zakończenie skojarzonego procesu. Powinna być wywoływana po wywołaniu wszystkich innych metod w procesie. Aby uniknąć blokowania bieżącego wątku Exited , użyj zdarzenia .
Ta metoda nakazuje składnikowi oczekiwanie Process nieskończonej ilości czasu na zakończenie procesu i procedur obsługi zdarzeń. Może to spowodować, że aplikacja przestanie odpowiadać. Jeśli na przykład wywołasz CloseMainWindow proces, który ma interfejs użytkownika, żądanie do systemu operacyjnego w celu zakończenia skojarzonego procesu może nie być obsługiwane, jeśli proces jest zapisywany, aby nigdy nie wprowadzać pętli komunikatów.
Uwaga
W .NET Framework 3.5 i starszych wersjach WaitForExit() przeciążenie czekało na MaxValue milisekundy (około 24 dni), a nie na czas nieokreślony. Ponadto poprzednie wersje nie czekały na zakończenie obsługi zdarzeń, jeśli osiągnięto pełny MaxValue czas.
To przeciążenie zapewnia ukończenie całego przetwarzania, w tym obsługę zdarzeń asynchronicznych dla przekierowanych standardowych danych wyjściowych. Tego przeciążenia należy użyć po wywołaniu WaitForExit(Int32) przeciążenia, gdy standardowe dane wyjściowe zostały przekierowane do asynchronicznych procedur obsługi zdarzeń.
Po zakończeniu skojarzonego procesu (czyli po zamknięciu przez system operacyjny przez normalne lub nietypowe zakończenie), system przechowuje informacje administracyjne o procesie i wraca do składnika, który został wywołany WaitForExit(). Składnik Process może następnie uzyskać dostęp do informacji, które obejmują ExitTimeelement , przy użyciu Handle elementu do zakończenia procesu.
Ponieważ skojarzony proces zakończył działanie, Handle właściwość składnika nie wskazuje już istniejącego zasobu procesu. Zamiast tego dojście może służyć tylko do uzyskiwania dostępu do informacji o zasobie procesu systemu operacyjnego. System jest świadomy dojść do procesów, które nie zostały zwolnione przez Process składniki, więc przechowuje ExitTime informacje i Handle w pamięci, dopóki Process składnik nie zwolni zasobów. Z tego powodu za każdym razem, gdy wywołasz StartProcess wystąpienie, wywołaj Close wywołanie po zakończeniu skojarzonego procesu i nie potrzebujesz już żadnych informacji administracyjnych dotyczących tego wystąpienia. Close zwalnia pamięć przydzieloną do zakończenia procesu.
Zobacz też
Dotyczy
WaitForExit(Int32)
- Źródło:
- Process.cs
- Źródło:
- Process.cs
- Źródło:
- Process.cs
Nakazuje Process składnikowi oczekiwanie określonej liczby milisekund na zakończenie skojarzonego procesu.
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
Czas oczekiwania na zakończenie skojarzonego procesu w milisekundach. Wartość 0 określa natychmiastowy zwrot, a wartość -1 określa nieskończone oczekiwanie.
Zwraca
true
jeśli skojarzony proces zakończył się; w przeciwnym razie , false
.
Wyjątki
Nie można uzyskać dostępu do ustawienia oczekiwania.
Nie ustawiono żadnego procesu Id , Handle a właściwość, z której Id można określić, nie istnieje.
-lub-
Brak procesu skojarzonego z tym Process obiektem.
-lub-
Próbujesz wywołać WaitForExit(Int32) proces uruchomiony na komputerze zdalnym. Ta metoda jest dostępna tylko w przypadku procesów uruchomionych na komputerze lokalnym.
milliseconds
jest liczbą ujemną inną niż -1, która reprezentuje nieskończony limit czasu.
Przykłady
Zobacz przykładowy kod dla ExitCode właściwości .
Uwagi
WaitForExit(Int32) Sprawia, że bieżący wątek czeka na zakończenie skojarzonego procesu. Powinna być wywoływana po wywołaniu wszystkich innych metod w procesie. Aby uniknąć blokowania bieżącego wątku Exited , użyj zdarzenia .
Ta metoda instruuje Process składnikowi, aby poczekał skończony czas na zakończenie procesu. Jeśli skojarzony proces nie zakończy się do końca interwału, ponieważ żądanie zakończenia zostanie odrzucone, false
zostanie zwrócony do procedury wywołującej. Można określić Timeout.Infinite dla , i Process.WaitForExit(Int32) będzie zachowywać się tak samo jak WaitForExit() przeciążeniemilliseconds
. Jeśli przekazujesz metodę 0 (zero), zwraca ona wartość true
tylko wtedy, gdy proces został już zakończony. W przeciwnym razie natychmiast zwraca wartość false
.
Uwaga
W .NET Framework 3.5 i starszych wersjach, jeśli milliseconds
wynosi -1, WaitForExit(Int32) przeciążenie czekało na MaxValue milisekundy (około 24 dni), nie przez czas nieokreślony.
Gdy standardowe dane wyjściowe zostały przekierowane do asynchronicznych procedur obsługi zdarzeń, przetwarzanie danych wyjściowych nie zostanie ukończone po zdaniu tej metody. Aby upewnić się, że obsługa zdarzeń asynchronicznych została ukończona, wywołaj WaitForExit() przeciążenie, które nie przyjmuje parametru po otrzymaniu true
z tego przeciążenia. Aby upewnić się, że Exited zdarzenie jest poprawnie obsługiwane w aplikacjach Windows Forms, ustaw SynchronizingObject właściwość .
Po zakończeniu skojarzonego procesu (jest zamykany przez system operacyjny przez normalne lub nietypowe zakończenie), system przechowuje informacje administracyjne o procesie i wraca do składnika, który został wywołany WaitForExit(Int32). Składnik Process może następnie uzyskać dostęp do informacji, które obejmują ExitTimeelement , przy użyciu Handle elementu do zakończenia procesu.
Ponieważ skojarzony proces zakończył działanie, Handle właściwość składnika nie wskazuje już istniejącego zasobu procesu. Zamiast tego dojście może służyć tylko do uzyskiwania dostępu do informacji o zasobie procesu systemu operacyjnego. System jest świadomy dojść do procesów, które nie zostały zwolnione przez Process składniki, więc przechowuje ExitTime informacje i Handle w pamięci, dopóki Process składnik nie zwolni zasobów. Z tego powodu za każdym razem, gdy wywołasz StartProcess wystąpienie, wywołaj Close wywołanie po zakończeniu skojarzonego procesu i nie potrzebujesz już żadnych informacji administracyjnych dotyczących tego wystąpienia. Close zwalnia pamięć przydzieloną do zakończenia procesu.
Zobacz też
Dotyczy
WaitForExit(TimeSpan)
- Źródło:
- Process.cs
- Źródło:
- Process.cs
- Źródło:
- Process.cs
Instruuje składnik Procesu, aby poczekał określony czas na zakończenie skojarzonego procesu.
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
Czas oczekiwania na zakończenie skojarzonego procesu.
Zwraca
true
jeśli skojarzony proces zakończył się; w przeciwnym razie , false
.
Uwagi
Zobacz WaitForExit(Int32) uwagi.