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 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.