Process.WaitForExit Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Establece el período de tiempo para esperar a que se cierre el proceso asociado y bloquee el subproceso actual de ejecución hasta que haya transcurrido el tiempo o el proceso haya salido. Para evitar el bloqueo del subproceso actual, use el Exited evento .
Para obtener ejemplos de código, vea las páginas de referencia de propiedades StandardError y ExitCode .
Sobrecargas
| Nombre | Description |
|---|---|
| WaitForExit() |
Process Indica al componente que espere indefinidamente para que se cierre el proceso asociado. |
| WaitForExit(Int32) |
Process Indica al componente que espere el número especificado de milisegundos para que se cierre el proceso asociado. |
| WaitForExit(TimeSpan) |
Indica al componente Proceso que espere la cantidad de tiempo especificada para que el proceso asociado salga. |
WaitForExit()
- Source:
- Process.cs
- Source:
- Process.cs
- Source:
- Process.cs
- Source:
- Process.cs
- Source:
- Process.cs
Process Indica al componente que espere indefinidamente para que se cierre el proceso asociado.
public:
void WaitForExit();
public void WaitForExit();
member this.WaitForExit : unit -> unit
Public Sub WaitForExit ()
Excepciones
No se pudo tener acceso a la configuración de espera.
No se ha establecido ningún proceso Id y no existe una Handle propiedad desde la que se puede determinar la Id propiedad.
O bien
No hay ningún proceso asociado a este Process objeto.
O bien
Está intentando llamar WaitForExit() a para un proceso que se ejecuta en un equipo remoto. Este método solo está disponible para los procesos que se ejecutan en el equipo local.
Ejemplos
Consulte 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 a después de llamar a todos los demás métodos en el proceso. Para evitar el bloqueo del subproceso actual, use el Exited evento .
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 CloseMainWindow a para un proceso que tiene una interfaz de usuario, es posible que la solicitud al sistema operativo para finalizar 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 esperaba MaxValue milisegundos (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 ha 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 , ExitTimemediante el Handle uso del al proceso de salida.
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, cada vez que llame Start a para una Process instancia, llame a Close 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
- Source:
- Process.cs
- Source:
- Process.cs
Process Indica al componente que espere el número especificado de milisegundos para que se cierre el proceso asociado.
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, para esperar a que se cierre el proceso asociado. Un valor de 0 especifica una devolución inmediata y un valor de -1 especifica una espera infinita.
Devoluciones
true si el proceso asociado ha salido; de lo contrario, false.
Excepciones
No se pudo tener acceso a la configuración de espera.
No se ha establecido ningún proceso Id y no existe una Handle propiedad desde la que se puede determinar la Id propiedad.
O bien
No hay ningún proceso asociado a este Process objeto.
O bien
Está intentando llamar WaitForExit(Int32) a para un proceso que se ejecuta en un equipo remoto. Este método solo está disponible 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 a después de llamar a todos los demás métodos en el proceso. Para evitar el bloqueo del subproceso actual, use el Exited evento .
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 se ha cerrado; de lo contrario, devuelve falseinmediatamente .
Nota:
En .NET Framework 3.5 y versiones anteriores, si milliseconds era -1, la WaitForExit(Int32) sobrecarga esperaba MaxValue milisegundos (aproximadamente 24 días), no indefinidamente.
Cuando se ha redirigido la salida estándar 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ónico, 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 las aplicaciones de Windows Forms, 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 , ExitTimemediante el Handle uso del al proceso de salida.
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, cada vez que llame Start a para una Process instancia, llame a Close 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
- Source:
- Process.cs
- Source:
- Process.cs
Indica al componente Proceso que espere la cantidad de tiempo especificada para que el proceso asociado salga.
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
true si el proceso asociado ha salido; de lo contrario, false.
Comentarios
Vea WaitForExit(Int32) los comentarios.