Compartir vía


Process.WaitForExit Método

Definición

Establece el período de tiempo que se debe esperar hasta que termine el proceso asociado y bloquea el subproceso que se está ejecutando en ese momento hasta que el tiempo de espera se haya agotado o el proceso haya terminado. Para evitar el bloqueo del subproceso actual, use el evento Exited.

Para obtener ejemplos de código, consulte las páginas de referencia de las propiedades StandardError y ExitCode.

Sobrecargas

WaitForExit()

Indica al componente Process que espere indefinidamente hasta que el proceso asociado termine.

WaitForExit(Int32)

Indica al componente Process que espere a que el proceso asociado termine durante el número de milisegundos especificado.

WaitForExit(TimeSpan)

Indica al componente Process que espere la cantidad de tiempo especificada para que se cierre el proceso asociado.

WaitForExit()

Source:
Process.cs
Source:
Process.cs
Source:
Process.cs

Indica al componente Process que espere indefinidamente hasta que el proceso asociado termine.

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

Excepciones

No se pudo tener acceso al valor de espera.

No se ha establecido ningún Id de proceso y no existe un Handle desde el que se pueda determinar la propiedad Id.

o bien

No hay ningún proceso asociado a este objeto Process .

o bien

Está intentando llamar a WaitForExit() para un proceso que se ejecuta en un equipo remoto. Este método está disponible únicamente para los procesos que se ejecutan en el equipo local.

Ejemplos

Vea la sección Comentarios de la página de referencia de propiedades StandardError .

Comentarios

WaitForExit() hace que el subproceso actual espere hasta que finalice el proceso asociado. Se debe llamar después de llamar a todos los demás métodos en el proceso. Para evitar el bloqueo del subproceso actual, use el evento Exited.

Este método indica al Process componente que espere una cantidad infinita de tiempo para que los controladores de procesos y eventos salgan. Esto puede hacer que una aplicación deje de responder. Por ejemplo, si llama a CloseMainWindow para un proceso que tiene una interfaz de usuario, es posible que la solicitud al sistema operativo finalice el proceso asociado no se controle si el proceso se escribe para que nunca escriba su bucle de mensajes.

Nota

En .NET Framework 3.5 y versiones anteriores, la WaitForExit() sobrecarga ha esperado milisegundos MaxValue (aproximadamente 24 días), no indefinidamente. Además, las versiones anteriores no esperaron a que los controladores de eventos salgan si se alcanzó el tiempo completo MaxValue .

Esta sobrecarga garantiza que se ha completado todo el procesamiento, incluido el control de eventos asincrónicos para la salida estándar redirigida. Debe usar esta sobrecarga después de una llamada a la WaitForExit(Int32) sobrecarga cuando se haya redirigido la salida estándar a los controladores de eventos asincrónicos.

Cuando se cierra un proceso asociado (es decir, cuando el sistema de operaciones cierra mediante una terminación normal o anómala), el sistema almacena información administrativa sobre el proceso y vuelve al componente que había llamado WaitForExit()a . A continuación, el Process componente puede acceder a la información, que incluye ExitTime, mediante el Handle para el proceso terminado.

Dado que el proceso asociado ha salido, la Handle propiedad del componente ya no apunta a un recurso de proceso existente. En su lugar, el identificador solo se puede usar para acceder a la información del sistema operativo sobre el recurso de proceso. El sistema es consciente de los identificadores de los procesos que no han sido liberados por Process los componentes, por lo que mantiene la ExitTime información y Handle en la memoria hasta que el Process componente libera específicamente los recursos. Por este motivo, en cualquier momento que llame a Start para una Process instancia, llame Close a cuando el proceso asociado haya finalizado y ya no necesite información administrativa sobre ella. Close libera la memoria asignada al proceso de salida.

Consulte también

Se aplica a

WaitForExit(Int32)

Source:
Process.cs
Source:
Process.cs
Source:
Process.cs

Indica al componente Process que espere a que el proceso asociado termine durante el número de milisegundos especificado.

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

Parámetros

milliseconds
Int32

Cantidad de tiempo, en milisegundos, que se esperará hasta que termine el proceso asociado. El valor 0 especifica una devolución inmediata, y el valor -1 especifica una espera infinita.

Devoluciones

Es true si el proceso asociado finalizó; de lo contrario, es false.

Excepciones

No se pudo tener acceso al valor de espera.

No se ha establecido ningún Id de proceso y no existe un Handle desde el que se pueda determinar la propiedad Id.

o bien

No hay ningún proceso asociado a este objeto Process .

o bien

Está intentando llamar a WaitForExit(Int32) para un proceso que se ejecuta en un equipo remoto. Este método está disponible únicamente para los procesos que se ejecutan en el equipo local.

milliseconds es un número negativo distinto de-1, que representa un tiempo de espera infinito.

Ejemplos

Vea el ejemplo de código de la ExitCode propiedad .

Comentarios

WaitForExit(Int32) hace que el subproceso actual espere hasta que finalice el proceso asociado. Se debe llamar después de llamar a todos los demás métodos en el proceso. Para evitar el bloqueo del subproceso actual, use el evento Exited.

Este método indica al Process componente que espere una cantidad finita de tiempo para que el proceso salga. Si el proceso asociado no sale al final del intervalo porque se deniega la solicitud para finalizar, false se devuelve al procedimiento de llamada. Puede especificar Timeout.Infinite para millisecondsy Process.WaitForExit(Int32) se comportará igual que la WaitForExit() sobrecarga. Si pasa 0 (cero) al método , solo devuelve true si el proceso ya ha salido; de lo contrario, devuelve falseinmediatamente .

Nota

En .NET Framework 3.5 y versiones anteriores, si milliseconds era -1, la WaitForExit(Int32) sobrecarga esperaba milisegundos MaxValue (aproximadamente 24 días), no indefinidamente.

Cuando la salida estándar se ha redirigido a controladores de eventos asincrónicos, es posible que el procesamiento de salida no se haya completado cuando este método devuelva. Para asegurarse de que se ha completado el control de eventos asincrónicos, llame a la WaitForExit() sobrecarga que no toma ningún parámetro después de recibir una true de esta sobrecarga. Para ayudar a garantizar que el Exited evento se controla correctamente en Windows Forms aplicaciones, establezca la SynchronizingObject propiedad .

Cuando se cierra un proceso asociado (el sistema operativo cierra a través de una terminación normal o anómala), el sistema almacena información administrativa sobre el proceso y vuelve al componente que había llamado WaitForExit(Int32)a . A continuación, el Process componente puede acceder a la información, que incluye ExitTime, mediante el Handle para el proceso terminado.

Dado que el proceso asociado ha salido, la Handle propiedad del componente ya no apunta a un recurso de proceso existente. En su lugar, el identificador solo se puede usar para acceder a la información del sistema operativo sobre el recurso de proceso. El sistema es consciente de los identificadores de los procesos que no han sido liberados por Process los componentes, por lo que mantiene la ExitTime información y Handle en la memoria hasta que el Process componente libera específicamente los recursos. Por este motivo, en cualquier momento que llame a Start para una Process instancia, llame Close a cuando el proceso asociado haya finalizado y ya no necesite información administrativa sobre ella. Close libera la memoria asignada al proceso de salida.

Consulte también

Se aplica a

WaitForExit(TimeSpan)

Source:
Process.cs
Source:
Process.cs
Source:
Process.cs

Indica al componente Process que espere la cantidad de tiempo especificada para que se cierre el proceso asociado.

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

Parámetros

timeout
TimeSpan

Cantidad de tiempo que se va a esperar a que se cierre el proceso asociado.

Devoluciones

Es true si el proceso asociado finalizó; de lo contrario, es false.

Comentarios

Vea WaitForExit(Int32) los comentarios.

Se aplica a