Partilhar via


Process.WaitForExit Método

Definição

Define o período de tempo para aguardar a saída do processo associado e bloqueia o thread atual da execução até que o tempo tenha decorrido ou o processo seja encerrado. Para evitar bloquear o thread atual, use o Exited evento.

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

Sobrecargas

Nome Description
WaitForExit()

Instrui o Process componente a aguardar indefinidamente a saída do processo associado.

WaitForExit(Int32)

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

WaitForExit(TimeSpan)

Instrui o componente Processo a aguardar o período de tempo especificado para que o processo associado seja encerrado.

WaitForExit()

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

Instrui o Process componente a aguardar indefinidamente a saída do processo associado.

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 um Handle a partir do qual a Id propriedade pode ser determinada não existe.

- ou -

Não há nenhum processo associado a esse Process objeto.

- ou -

Você está tentando chamar WaitForExit() um processo em execução em um computador remoto. Esse método está disponível apenas 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 bloquear o thread atual, use o Exited evento.

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 esperavam que os manipuladores de eventos saíssem se o tempo integral 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 a ExitTime, usando o Handle processo de saída.

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 dos processos encerrados que não foram liberados pelos Process componentes, portanto, ele mantém as informações e Handle as ExitTime informações 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 ele. 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
Origem:
Process.cs
Origem:
Process.cs

Instrui o Process componente 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

A quantidade de tempo, em milissegundos, para aguardar a saída do processo associado. Um valor 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 um Handle a partir do qual a Id propriedade pode ser determinada não existe.

- ou -

Não há nenhum processo associado a esse Process objeto.

- ou -

Você está tentando chamar WaitForExit(Int32) um processo em execução em um computador remoto. Esse método está disponível apenas 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 bloquear o thread atual, use o Exited evento.

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 término for negada, false será retornada ao procedimento de chamada. Você pode especificar Timeout.Infinite e millisecondsProcess.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, ele retornará falseimediatamente .

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 foi 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íncrono tenha sido concluído, chame a WaitForExit() sobrecarga que não usa nenhum parâmetro depois de receber uma true dessa sobrecarga. Para ajudar a garantir que o Exited evento seja tratado corretamente em aplicativos do 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 a ExitTime, usando o Handle processo de saída.

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 dos processos encerrados que não foram liberados pelos Process componentes, portanto, ele mantém as informações e Handle as ExitTime informações 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 ele. 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
Origem:
Process.cs
Origem:
Process.cs

Instrui o componente Processo a aguardar o período de tempo especificado 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 para aguardar a saída do processo associado.

Retornos

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

Comentários

Confira WaitForExit(Int32) as observações.

Aplica-se a