Process.WaitForExit Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Задает период времени ожидания завершения связанного процесса и блокирует текущий поток выполнения до истечения времени или завершения процесса. Чтобы избежать блокировки текущего потока, используйте Exited событие.
Примеры кода см. на StandardErrorExitCode страницах ссылок на свойства.
Перегрузки
| Имя | Описание |
|---|---|
| WaitForExit() |
Указывает Process компоненту ждать неограниченное время завершения связанного процесса. |
| WaitForExit(Int32) |
Указывает Process компоненту ждать указанного количества миллисекунда для завершения связанного процесса. |
| WaitForExit(TimeSpan) |
Указывает компоненту Process ждать указанного времени завершения связанного процесса. |
WaitForExit()
- Исходный код:
- Process.cs
- Исходный код:
- Process.cs
- Исходный код:
- Process.cs
- Исходный код:
- Process.cs
- Исходный код:
- Process.cs
Указывает Process компоненту ждать неограниченное время завершения связанного процесса.
public:
void WaitForExit();
public void WaitForExit();
member this.WaitForExit : unit -> unit
Public Sub WaitForExit ()
Исключения
Не удалось получить доступ к параметру ожидания.
Id Процесс не задан, и Handle свойство, из которого Id можно определить свойство, не существует.
–или–
Процесс не связан с этим Process объектом.
–или–
Вы пытаетесь вызвать WaitForExit() процесс, выполняющийся на удаленном компьютере. Этот метод доступен только для процессов, выполняемых на локальном компьютере.
Примеры
См. раздел "Примечания" страницы ссылки на StandardError свойство.
Комментарии
WaitForExit() делает текущий поток ожиданием, пока связанный процесс не завершится. Он должен вызываться после вызова всех других методов в процессе. Чтобы избежать блокировки текущего потока, используйте Exited событие.
Этот метод указывает Process компоненту ждать бесконечного времени завершения процесса и обработчиков событий. Это может привести к остановке ответа приложения. Например, если вы вызываете CloseMainWindow процесс с пользовательским интерфейсом, запрос к операционной системе для завершения связанного процесса может не обрабатываться, если процесс записывается, чтобы никогда не входить в цикл сообщений.
Замечание
В .NET Framework 3.5 и более ранних версиях WaitForExit() перегрузка ждала MaxValue миллисекунд (около 24 дней), а не на неопределенный срок. Кроме того, предыдущие версии не ждали выхода обработчиков событий, если достигнут полный MaxValue рабочий день.
Эта перегрузка гарантирует завершение всей обработки, включая обработку асинхронных событий для перенаправленных стандартных выходных данных. Эту перегрузку следует использовать после вызова WaitForExit(Int32) перегрузки при перенаправлении стандартных выходных данных в асинхронные обработчики событий.
Когда связанный процесс завершается (то есть при завершении работы операционной системой через обычное или ненормальное завершение), система сохраняет административные сведения о процессе и возвращается в вызываемый WaitForExit()компонент. Затем Process компонент может получить доступ к информации, включающей ExitTimeданные, с помощью Handle выходного процесса.
Так как связанный процесс завершился, Handle свойство компонента больше не указывает на существующий ресурс процесса. Вместо этого дескриптор можно использовать только для доступа к сведениям операционной системы о ресурсе процесса. Система знает об дескрипторах для выхода из процессов, которые не были освобождены Process компонентами, поэтому он сохраняет ExitTime и Handle информацию в памяти, пока Process компонент специально не освобождает ресурсы. По этой причине при вызове Start экземпляра вызовитеClose, когда связанный Process процесс завершился, и вам больше не нужны административные сведения об этом. Close освобождает память, выделенную для выходного процесса.
См. также раздел
Применяется к
WaitForExit(Int32)
- Исходный код:
- Process.cs
- Исходный код:
- Process.cs
- Исходный код:
- Process.cs
- Исходный код:
- Process.cs
- Исходный код:
- Process.cs
Указывает Process компоненту ждать указанного количества миллисекунда для завершения связанного процесса.
public:
bool WaitForExit(int milliseconds);
public bool WaitForExit(int milliseconds);
member this.WaitForExit : int -> bool
Public Function WaitForExit (milliseconds As Integer) As Boolean
Параметры
- milliseconds
- Int32
Время ожидания завершения связанного процесса в миллисекундах. Значение 0 указывает немедленное возвращение, а значение -1 указывает бесконечное ожидание.
Возвращаемое значение
Исключения
Не удалось получить доступ к параметру ожидания.
Id Процесс не задан, и Handle свойство, из которого Id можно определить свойство, не существует.
–или–
Процесс не связан с этим Process объектом.
–или–
Вы пытаетесь вызвать WaitForExit(Int32) процесс, выполняющийся на удаленном компьютере. Этот метод доступен только для процессов, выполняемых на локальном компьютере.
milliseconds — отрицательное число, отличное от -1, которое представляет бесконечное время ожидания.
Примеры
См. пример кода для ExitCode свойства.
Комментарии
WaitForExit(Int32) делает текущий поток ожиданием, пока связанный процесс не завершится. Он должен вызываться после вызова всех других методов в процессе. Чтобы избежать блокировки текущего потока, используйте Exited событие.
Этот метод указывает Process компоненту ждать конечного времени завершения процесса. Если связанный процесс не завершается к концу интервала, так как запрос на завершение отклоняется, false возвращается в вызывающую процедуру. Для этого можно указать Timeout.Infinitemillisecondsи Process.WaitForExit(Int32) вести себя так же, как перегрузка WaitForExit() . Если вы передаете методу 0 (ноль), он возвращается true только в том случае, если процесс уже завершился; в противном случае он немедленно возвращается false.
Замечание
В .NET Framework 3.5 и более ранних версиях, если milliseconds было -1, WaitForExit(Int32) перегрузка ждала MaxValue миллисекунд (примерно 24 дня), а не на неопределенный срок.
При перенаправлении стандартных выходных данных в асинхронные обработчики событий возможно, что обработка выходных данных не будет завершена при возврате этого метода. Чтобы убедиться, что асинхронная обработка событий завершена, вызовите WaitForExit() перегрузку, которая не принимает параметр после получения true от этой перегрузки. Чтобы обеспечить Exited правильную обработку события в приложениях Windows Forms, задайте SynchronizingObject свойство.
Когда связанный процесс завершается (завершает работу операционной системы через обычное или ненормальное завершение), система сохраняет административную информацию о процессе и возвращается в вызываемый WaitForExit(Int32)компонент. Затем Process компонент может получить доступ к информации, включающей ExitTimeданные, с помощью Handle выходного процесса.
Так как связанный процесс завершился, Handle свойство компонента больше не указывает на существующий ресурс процесса. Вместо этого дескриптор можно использовать только для доступа к сведениям операционной системы о ресурсе процесса. Система знает об дескрипторах для выхода из процессов, которые не были освобождены Process компонентами, поэтому он сохраняет ExitTime и Handle информацию в памяти, пока Process компонент специально не освобождает ресурсы. По этой причине при вызове Start экземпляра вызовитеClose, когда связанный Process процесс завершился, и вам больше не нужны административные сведения об этом. Close освобождает память, выделенную для выходного процесса.
См. также раздел
Применяется к
WaitForExit(TimeSpan)
- Исходный код:
- Process.cs
- Исходный код:
- Process.cs
- Исходный код:
- Process.cs
- Исходный код:
- Process.cs
- Исходный код:
- Process.cs
Указывает компоненту Process ждать указанного времени завершения связанного процесса.
public:
bool WaitForExit(TimeSpan timeout);
public bool WaitForExit(TimeSpan timeout);
member this.WaitForExit : TimeSpan -> bool
Public Function WaitForExit (timeout As TimeSpan) As Boolean
Параметры
- timeout
- TimeSpan
Время ожидания завершения связанного процесса.
Возвращаемое значение
Комментарии
См WaitForExit(Int32) . примечания.