Compartilhar via


Process.WaitForExit Método

Definição

Define o período de tempo a esperar para o processo associado sair e bloqueia o thread atual de execução até que o tempo tenha passado ou o processo tenha sido encerrado. Para evitar o bloqueio do thread atual, use o evento Exited.

Para obter exemplos de código, consulte StandardError e as páginas de referência de propriedade ExitCode.

Sobrecargas

WaitForExit()

Instrui o componente Process a esperar indefinidamente que o processo associado seja encerrado.

WaitForExit(Int32)

Instrui o componente Process a aguardar o número especificado de milissegundos para que o processo associado seja encerrado.

WaitForExit(TimeSpan)

Instrui o componente Processo a aguardar a quantidade de tempo especificada para que o processo associado seja encerrado.

WaitForExit()

Origem:
Process.cs
Origem:
Process.cs
Origem:
Process.cs

Instrui o componente Process a esperar indefinidamente que o processo associado seja encerrado.

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

Exceções

Não foi possível acessar a configuração de espera.

Nenhum processo Id foi definido e não existe um Handle do qual a propriedade Id possa ser determinada.

- ou -

Não há processos associados a esse objeto Process.

- ou -

Você está tentando chamar WaitForExit() para um processo em execução em um computador remoto. Esse método está disponível somente para processos em execução no computador local.

Exemplos

Consulte a seção Comentários da página de referência de StandardError propriedade.

Comentários

WaitForExit() faz com que o thread atual aguarde até que o processo associado seja encerrado. Ele deve ser chamado depois que todos os outros métodos forem chamados no processo. Para evitar o bloqueio do thread atual, use o evento Exited.

Esse método instrui o Process componente a aguardar uma quantidade infinita de tempo para que o processo e os manipuladores de eventos sejam encerrados. Isso pode fazer com que um aplicativo pare de responder. Por exemplo, se você chamar CloseMainWindow um processo que tenha uma interface do usuário, a solicitação ao sistema operacional para encerrar o processo associado poderá não ser tratada se o processo for gravado para nunca inserir seu loop de mensagem.

Observação

No .NET Framework 3.5 e versões anteriores, a WaitForExit() sobrecarga esperou por MaxValue milissegundos (aproximadamente 24 dias), não indefinidamente. Além disso, as versões anteriores não aguardaram a saída dos manipuladores de eventos se o tempo inteiro MaxValue fosse atingido.

Essa sobrecarga garante que todo o processamento tenha sido concluído, incluindo o tratamento de eventos assíncronos para saída padrão redirecionada. Você deve usar essa sobrecarga após uma chamada para a sobrecarga quando a WaitForExit(Int32) saída padrão tiver sido redirecionada para manipuladores de eventos assíncronos.

Quando um processo associado é encerrado (ou seja, quando é desligado pelo sistema operacional por meio de uma terminação normal ou anormal), o sistema armazena informações administrativas sobre o processo e retorna ao componente que havia chamado WaitForExit(). Em Process seguida, o componente pode acessar as informações, que incluem o ExitTime, usando o Handle para o processo encerrado.

Como o processo associado foi encerrado, a Handle propriedade do componente não aponta mais para um recurso de processo existente. Em vez disso, o identificador só pode ser usado para acessar as informações do sistema operacional sobre o recurso de processo. O sistema está ciente dos identificadores para processos encerrados que não foram liberados pelos Process componentes, portanto, ele mantém as ExitTime informações e Handle na memória até que o Process componente libere especificamente os recursos. Por esse motivo, sempre que você chamar Start uma Process instância, chame Close quando o processo associado for encerrado e você não precisar mais de informações administrativas sobre ela. Close libera a memória alocada para o processo encerrado.

Confira também

Aplica-se a

WaitForExit(Int32)

Origem:
Process.cs
Origem:
Process.cs
Origem:
Process.cs

Instrui o componente Process a aguardar o número especificado de milissegundos para que o processo associado seja encerrado.

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

O tempo, em milissegundos, a aguardar até que o processo seja encerrado. Um valor de 0 especifica um retorno imediato e um valor de -1 especifica uma espera infinita.

Retornos

true se o processo associado tiver sido encerrado; caso contrário, false.

Exceções

Não foi possível acessar a configuração de espera.

Nenhum processo Id foi definido e não existe um Handle do qual a propriedade Id possa ser determinada.

- ou -

Não há processos associados a esse objeto Process.

- ou -

Você está tentando chamar WaitForExit(Int32) para um processo em execução em um computador remoto. Esse método está disponível somente para processos em execução no computador local.

milliseconds é um número negativo diferente de -1, que representa um tempo limite infinito.

Exemplos

Consulte o exemplo de código para a ExitCode propriedade .

Comentários

WaitForExit(Int32) faz com que o thread atual aguarde até que o processo associado seja encerrado. Ele deve ser chamado depois que todos os outros métodos forem chamados no processo. Para evitar o bloqueio do thread atual, use o evento Exited.

Esse método instrui o Process componente a aguardar um período finito de tempo para que o processo seja encerrado. Se o processo associado não sair até o final do intervalo porque a solicitação de encerramento for negada, false será retornado ao procedimento de chamada. Você pode especificar Timeout.Infinite para millisecondse Process.WaitForExit(Int32) se comportará da mesma forma que a WaitForExit() sobrecarga. Se você passar 0 (zero) para o método , ele retornará true somente se o processo já tiver sido encerrado; caso contrário, retornará imediatamente false.

Observação

No .NET Framework 3.5 e versões anteriores, se milliseconds fosse -1, a WaitForExit(Int32) sobrecarga esperava por MaxValue milissegundos (aproximadamente 24 dias), não indefinidamente.

Quando a saída padrão tiver sido redirecionada para manipuladores de eventos assíncronos, é possível que o processamento de saída não tenha sido concluído quando esse método retornar. Para garantir que o tratamento de eventos assíncronos tenha sido concluído, chame a WaitForExit() sobrecarga que não usa nenhum parâmetro depois de receber um true dessa sobrecarga. Para ajudar a garantir que o Exited evento seja tratado corretamente em aplicativos Windows Forms, defina a SynchronizingObject propriedade .

Quando um processo associado é encerrado (é desligado pelo sistema operacional por meio de uma terminação normal ou anormal), o sistema armazena informações administrativas sobre o processo e retorna ao componente que havia chamado WaitForExit(Int32). Em Process seguida, o componente pode acessar as informações, que incluem o ExitTime, usando o Handle para o processo encerrado.

Como o processo associado foi encerrado, a Handle propriedade do componente não aponta mais para um recurso de processo existente. Em vez disso, o identificador só pode ser usado para acessar as informações do sistema operacional sobre o recurso de processo. O sistema está ciente dos identificadores para processos encerrados que não foram liberados pelos Process componentes, portanto, ele mantém as ExitTime informações e Handle na memória até que o Process componente libere especificamente os recursos. Por esse motivo, sempre que você chamar Start uma Process instância, chame Close quando o processo associado for encerrado e você não precisar mais de informações administrativas sobre ela. Close libera a memória alocada para o processo encerrado.

Confira também

Aplica-se a

WaitForExit(TimeSpan)

Origem:
Process.cs
Origem:
Process.cs
Origem:
Process.cs

Instrui o componente Processo a aguardar a quantidade de tempo especificada para que o processo associado seja encerrado.

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

A quantidade de tempo de espera para que o processo associado seja encerrado.

Retornos

true se o processo associado tiver sido encerrado; caso contrário, false.

Comentários

Confira WaitForExit(Int32) os comentários.

Aplica-se a