Process.WaitForExit Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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 milliseconds
e 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.