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.Sets the period of time to wait for the associated process to exit, and blocks the current thread of execution until the time has elapsed or the process has exited. Para evitar el bloqueo del subproceso actual, use el evento Exited.To avoid blocking the current thread, use the Exited event.

Para obtener ejemplos de código, consulte las páginas de referencia de las propiedades StandardError y ExitCode.For code examples, see the StandardError and the ExitCode property reference pages.

Sobrecargas

WaitForExit()

Indica al componente Process que espere indefinidamente hasta que el proceso asociado termine.Instructs the Process component to wait indefinitely for the associated process to exit.

WaitForExit(Int32)

Indica al componente Process que espere a que el proceso asociado termine durante el número de milisegundos especificado.Instructs the Process component to wait the specified number of milliseconds for the associated process to exit.

WaitForExit()

Indica al componente Process que espere indefinidamente hasta que el proceso asociado termine.Instructs the Process component to wait indefinitely for the associated process to exit.

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

Excepciones

No se pudo tener acceso al valor de espera.The wait setting could not be accessed.

No se ha establecido ningún Id de proceso y no existe un Handle desde el que se pueda determinar la propiedad Id.No process Id has been set, and a Handle from which the Id property can be determined does not exist.

o bien-or- No hay ningún proceso asociado a este objeto Process .There is no process associated with this Process object.

o bien-or- Está intentando llamar a WaitForExit() para un proceso que se ejecuta en un equipo remoto.You are attempting to call WaitForExit() for a process that is running on a remote computer. Este método está disponible únicamente para los procesos que se ejecutan en el equipo local.This method is available only for processes that are running on the local computer.

Ejemplos

Vea la sección Comentarios de la StandardError Página de referencia de propiedades.See the Remarks section of the StandardError property reference page.

Comentarios

WaitForExit() hace que el subproceso actual espere hasta que finalice el proceso asociado.WaitForExit() makes the current thread wait until the associated process terminates. Se debe llamar después de llamar a todos los demás métodos en el proceso.It should be called after all other methods are called on the process. Para evitar el bloqueo del subproceso actual, use el evento Exited.To avoid blocking the current thread, use the Exited event.

Este método indica al Process componente que espere una cantidad de tiempo infinita para que el proceso y los controladores de eventos salgan.This method instructs the Process component to wait an infinite amount of time for the process and event handlers to exit. Esto puede hacer que una aplicación deje de responder.This can cause an application to stop responding. Por ejemplo, si se llama a CloseMainWindow para un proceso que tiene una interfaz de usuario, la solicitud al sistema operativo para finalizar el proceso asociado podría no controlarse si el proceso se escribe para no escribir nunca su bucle de mensajes.For example, if you call CloseMainWindow for a process that has a user interface, the request to the operating system to terminate the associated process might not be handled if the process is written to never enter its message loop.

Nota

En el .NET Framework 3,5 y versiones anteriores, la WaitForExit() sobrecarga esperó durante MaxValue milisegundos (aproximadamente 24 días), no indefinidamente.In the .NET Framework 3.5 and earlier versions, the WaitForExit() overload waited for MaxValue milliseconds (approximately 24 days), not indefinitely. Además, las versiones anteriores no esperaban a que los controladores de eventos saliran si MaxValue se alcanzase el tiempo completo.Also, previous versions did not wait for the event handlers to exit if the full MaxValue time was reached.

Esta sobrecarga garantiza que se ha completado todo el procesamiento, incluido el control de eventos asincrónicos para la salida estándar redirigida.This overload ensures that all processing has been completed, including the handling of asynchronous events for redirected standard output. Debe utilizar esta sobrecarga después de una llamada a la WaitForExit(Int32) sobrecarga cuando la salida estándar se haya redirigido a los controladores de eventos asincrónicos.You should use this overload after a call to the WaitForExit(Int32) overload when standard output has been redirected to asynchronous event handlers.

Cuando se cierra un proceso asociado (es decir, cuando el sistema operativo lo apaga a través de una terminación normal o anómala), el sistema almacena información administrativa sobre el proceso y vuelve al componente al que se ha llamado WaitForExit() .When an associated process exits (that is, when it is shut down by the operation system through a normal or abnormal termination), the system stores administrative information about the process and returns to the component that had called WaitForExit(). ProcessA continuación, el componente puede tener acceso a la información, que incluye ExitTime , mediante el uso del Handle en el proceso salido.The Process component can then access the information, which includes the ExitTime, by using the Handle to the exited process.

Dado que el proceso asociado ha terminado, la Handle propiedad del componente ya no señala a un recurso de proceso existente.Because the associated process has exited, the Handle property of the component no longer points to an existing process resource. En su lugar, el identificador solo se puede usar para tener acceso a la información del sistema operativo sobre el recurso de proceso.Instead, the handle can be used only to access the operating system's information about the process resource. El sistema es consciente de los identificadores de los procesos salidos que no se han liberado por Process componentes, por lo que mantiene la ExitTime Handle información y en memoria hasta que el Process componente libera específicamente los recursos.The system is aware of handles to exited processes that have not been released by Process components, so it keeps the ExitTime and Handle information in memory until the Process component specifically frees the resources. Por esta razón, cada vez que llame a Start para una Process instancia de, llame a Close cuando haya terminado el proceso asociado y ya no necesite información administrativa sobre él.For this reason, any time you call Start for a Process instance, call Close when the associated process has terminated and you no longer need any administrative information about it. Close libera la memoria asignada al proceso salido.Close frees the memory allocated to the exited process.

Consulte también

Se aplica a

WaitForExit(Int32)

Indica al componente Process que espere a que el proceso asociado termine durante el número de milisegundos especificado.Instructs the Process component to wait the specified number of milliseconds for the associated process to exit.

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.The amount of time, in milliseconds, to wait for the associated process to exit. El valor 0 especifica una devolución inmediata, y el valor -1 especifica una espera infinita.A value of 0 specifies an immediate return, and a value of -1 specifies an infinite wait.

Devoluciones

Boolean

Es true si el proceso asociado finalizó; de lo contrario, es false.true if the associated process has exited; otherwise, false.

Excepciones

No se pudo tener acceso al valor de espera.The wait setting could not be accessed.

No se ha establecido ningún Id de proceso y no existe un Handle desde el que se pueda determinar la propiedad Id.No process Id has been set, and a Handle from which the Id property can be determined does not exist.

o bien-or- No hay ningún proceso asociado a este objeto Process .There is no process associated with this Process object.

o bien-or- Está intentando llamar a WaitForExit(Int32) para un proceso que se ejecuta en un equipo remoto.You are attempting to call WaitForExit(Int32) for a process that is running on a remote computer. Este método está disponible únicamente para los procesos que se ejecutan en el equipo local.This method is available only for processes that are running on the local computer.

milliseconds es un número negativo distinto de-1, que representa un tiempo de espera infinito.milliseconds is a negative number other than -1, which represents an infinite time-out.

Ejemplos

Vea el ejemplo de código de la ExitCode propiedad.See the code example for the ExitCode property.

Comentarios

WaitForExit(Int32) hace que el subproceso actual espere hasta que finalice el proceso asociado.WaitForExit(Int32) makes the current thread wait until the associated process terminates. Se debe llamar después de llamar a todos los demás métodos en el proceso.It should be called after all other methods are called on the process. Para evitar el bloqueo del subproceso actual, use el evento Exited.To avoid blocking the current thread, use the Exited event.

Este método indica al Process componente que espere una cantidad finita de tiempo para que el proceso salga.This method instructs the Process component to wait a finite amount of time for the process to exit. Si el proceso asociado no sale por el final del intervalo porque se deniega la solicitud de finalización, false se devuelve al procedimiento que realiza la llamada.If the associated process does not exit by the end of the interval because the request to terminate is denied, false is returned to the calling procedure. Puede especificar Timeout.Infinite para milliseconds y Process.WaitForExit(Int32) se comportará igual que la WaitForExit() sobrecarga.You can specify Timeout.Infinite for milliseconds, and Process.WaitForExit(Int32) will behave the same as the WaitForExit() overload. Si se pasa 0 (cero) al método, devuelve true solo si el proceso ya se ha cerrado; de lo contrario, devuelve false .If you pass 0 (zero) to the method, it returns true only if the process has already exited; otherwise, it immediately returns false.

Nota

En el .NET Framework 3,5 y versiones anteriores, si milliseconds era-1, la WaitForExit(Int32) sobrecarga esperó durante MaxValue milisegundos (aproximadamente 24 días), no indefinidamente.In the .NET Framework 3.5 and earlier versions, if milliseconds was -1, the WaitForExit(Int32) overload waited for MaxValue milliseconds (approximately 24 days), not indefinitely.

Cuando se ha redirigido la salida estándar a los controladores de eventos asincrónicos, es posible que no se complete el procesamiento de salida cuando se devuelva este método.When standard output has been redirected to asynchronous event handlers, it is possible that output processing will not have completed when this method returns. 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 un true de esta sobrecarga.To ensure that asynchronous event handling has been completed, call the WaitForExit() overload that takes no parameter after receiving a true from this overload. Para asegurarse de que el Exited evento se controla correctamente en Windows Forms aplicaciones, establezca la SynchronizingObject propiedad.To help ensure that the Exited event is handled correctly in Windows Forms applications, set the SynchronizingObject property.

Cuando finaliza un proceso asociado (el sistema operativo lo apaga a través de una terminación normal o anómala), el sistema almacena información administrativa sobre el proceso y vuelve al componente al que se ha llamado WaitForExit(Int32) .When an associated process exits (is shut down by the operating system through a normal or abnormal termination), the system stores administrative information about the process and returns to the component that had called WaitForExit(Int32). ProcessA continuación, el componente puede tener acceso a la información, que incluye ExitTime , mediante el uso del Handle en el proceso salido.The Process component can then access the information, which includes the ExitTime, by using the Handle to the exited process.

Dado que el proceso asociado ha terminado, la Handle propiedad del componente ya no señala a un recurso de proceso existente.Because the associated process has exited, the Handle property of the component no longer points to an existing process resource. En su lugar, el identificador solo se puede usar para tener acceso a la información del sistema operativo sobre el recurso de proceso.Instead, the handle can be used only to access the operating system's information about the process resource. El sistema es consciente de los identificadores de los procesos salidos que no se han liberado por Process componentes, por lo que mantiene la ExitTime Handle información y en memoria hasta que el Process componente libera específicamente los recursos.The system is aware of handles to exited processes that have not been released by Process components, so it keeps the ExitTime and Handle information in memory until the Process component specifically frees the resources. Por esta razón, cada vez que llame a Start para una Process instancia de, llame a Close cuando haya terminado el proceso asociado y ya no necesite información administrativa sobre él.For this reason, any time you call Start for a Process instance, call Close when the associated process has terminated and you no longer need any administrative information about it. Close libera la memoria asignada al proceso salido.Close frees the memory allocated to the exited process.

Consulte también

Se aplica a