Process.WaitForExit Metodo

Definizione

Imposta l'intervallo di tempo in base al quale attendere che il processo associato venga terminato e blocca il thread corrente di esecuzione fino alla scadenza di tale intervallo o al termine del processo. Per evitare di bloccare il thread corrente, usare l'evento Exited.

Per esempi di codice, vedere le pagine di riferimento alle proprietà StandardError e ExitCode.

Overload

WaitForExit()

Indica al componente Process di attendere in modo indefinito la terminazione del processo associato.

WaitForExit(Int32)

Indica al componente Process di attendere per il numero specificato di millisecondi che il processo venga terminato.

WaitForExit(TimeSpan)

Indica al componente Process di attendere il tempo specificato per uscire dal processo associato.

WaitForExit()

Origine:
Process.cs
Origine:
Process.cs
Origine:
Process.cs

Indica al componente Process di attendere in modo indefinito la terminazione del processo associato.

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

Eccezioni

Non è stato possibile accedere all'impostazione di attesa.

Non è stato impostato alcun Id di processo e non è presente alcun Handle da cui è possibile determinare la proprietà Id.

-oppure-

A questo oggetto Process non è associato alcun processo.

-oppure-

Si sta provando a chiamare WaitForExit() per un processo in esecuzione in un computer remoto. Questo metodo è disponibile solo per i processi in esecuzione nel computer locale.

Esempio

Vedere la sezione Osservazioni della pagina di riferimento della StandardError proprietà.

Commenti

WaitForExit() rende il thread corrente attendere fino al termine del processo associato. Deve essere chiamato dopo che tutti gli altri metodi vengono chiamati sul processo. Per evitare di bloccare il thread corrente, usare l'evento Exited.

Questo metodo indica Process al componente di attendere un intervallo infinito di tempo per uscire dal processo e dai gestori eventi. Ciò può causare l'arresto della risposta di un'applicazione. Ad esempio, se si chiama CloseMainWindow un processo con un'interfaccia utente, la richiesta al sistema operativo di terminare il processo associato potrebbe non essere gestita se il processo viene scritto per non immettere mai il ciclo del messaggio.

Nota

Nelle versioni precedenti e .NET Framework 3.5 l'overload WaitForExit() attendeva millisecondi (circa 24 giorni), non indefinito MaxValue . Inoltre, le versioni precedenti non attendevano che i gestori eventi escino se il tempo pieno MaxValue è stato raggiunto.

Questo overload garantisce che sia stata completata tutta l'elaborazione, inclusa la gestione degli eventi asincroni per l'output standard reindirizzato. È consigliabile usare questo overload dopo una chiamata all'overload quando l'output WaitForExit(Int32) standard è stato reindirizzato ai gestori eventi asincroni.

Quando un processo associato viene chiuso, ovvero quando viene arrestato dal sistema operativo tramite una normale terminazione o anormale, il sistema archivia informazioni amministrative sul processo e restituisce al componente che aveva chiamato WaitForExit(). Il Process componente può quindi accedere alle informazioni, che includono , usando l'oggetto ExitTimeHandle per il processo chiuso.

Poiché il processo associato è stato chiuso, la Handle proprietà del componente non punta più a una risorsa di processo esistente. È invece possibile usare l'handle solo per accedere alle informazioni del sistema operativo sulla risorsa del processo. Il sistema è a conoscenza degli handle per uscire dai processi che non sono stati rilasciati dai Process componenti, quindi mantiene le ExitTime informazioni e Handle in memoria fino a quando il Process componente libera in modo specifico le risorse. Per questo motivo, ogni volta che si chiama per un'istanzaProcess, chiamare StartClose quando il processo associato è terminato e non sono più necessarie informazioni amministrative su di esso. Close libera la memoria allocata al processo chiuso.

Vedi anche

Si applica a

WaitForExit(Int32)

Origine:
Process.cs
Origine:
Process.cs
Origine:
Process.cs

Indica al componente Process di attendere per il numero specificato di millisecondi che il processo venga terminato.

public:
 bool WaitForExit(int milliseconds);
public bool WaitForExit (int milliseconds);
member this.WaitForExit : int -> bool
Public Function WaitForExit (milliseconds As Integer) As Boolean

Parametri

milliseconds
Int32

Quantità di tempo, espressa in millisecondi, in base alla quale viene attesa la terminazione del processo associato. Un valore pari a 0 specifica una restituzione immediata, mentre un valore pari a -1 specifica un'attesa infinita.

Restituisce

true se il processo associato è stato terminato; in caso contrario, false.

Eccezioni

Non è stato possibile accedere all'impostazione di attesa.

Non è stato impostato alcun Id di processo e non è presente alcun Handle da cui è possibile determinare la proprietà Id.

-oppure-

A questo oggetto Process non è associato alcun processo.

-oppure-

Si sta provando a chiamare WaitForExit(Int32) per un processo in esecuzione in un computer remoto. Questo metodo è disponibile solo per i processi in esecuzione nel computer locale.

milliseconds è un numero negativo diverso da -1, che rappresenta un timeout infinito.

Esempio

Per la proprietà, vedere l'esempio di ExitCode codice.

Commenti

WaitForExit(Int32) rende il thread corrente attendere fino al termine del processo associato. Deve essere chiamato dopo che tutti gli altri metodi vengono chiamati sul processo. Per evitare di bloccare il thread corrente, usare l'evento Exited.

Questo metodo indica Process al componente di attendere un periodo di tempo limitato per l'uscita del processo. Se il processo associato non viene chiuso entro la fine dell'intervallo perché la richiesta di terminazione viene negata, false viene restituita alla procedura chiamante. È possibile specificare Timeout.Infinite per millisecondse Process.WaitForExit(Int32) si comporta come l'overload WaitForExit() . Se si passa 0 (zero) al metodo, restituisce true solo se il processo è già uscito; in caso contrario, restituisce falseimmediatamente .

Nota

Nelle versioni precedenti e .NET Framework 3.5, se milliseconds era -1, l'overload WaitForExit(Int32) attendeva millisecondi (circa 24 giorni), non indefinito MaxValue .

Quando l'output standard è stato reindirizzato ai gestori eventi asincroni, è possibile che l'elaborazione dell'output non sia stata completata quando questo metodo restituisce. Per assicurarsi che la gestione degli eventi asincrona sia stata completata, chiamare l'overload WaitForExit() che non accetta alcun parametro dopo aver ricevuto un true oggetto da questo overload. Per assicurarsi che l'evento Exited venga gestito correttamente nelle applicazioni Windows Forms, impostare la SynchronizingObject proprietà .

Quando un processo associato viene chiuso (viene arrestato dal sistema operativo tramite una terminazione normale o anormale), il sistema archivia informazioni amministrative sul processo e restituisce al componente che aveva chiamato WaitForExit(Int32). Il Process componente può quindi accedere alle informazioni, che includono , usando l'oggetto ExitTimeHandle per il processo chiuso.

Poiché il processo associato è stato chiuso, la Handle proprietà del componente non punta più a una risorsa di processo esistente. È invece possibile usare l'handle solo per accedere alle informazioni del sistema operativo sulla risorsa del processo. Il sistema è a conoscenza degli handle per uscire dai processi che non sono stati rilasciati dai Process componenti, quindi mantiene le ExitTime informazioni e Handle in memoria fino a quando il Process componente libera in modo specifico le risorse. Per questo motivo, ogni volta che si chiama per un'istanzaProcess, chiamare StartClose quando il processo associato è terminato e non sono più necessarie informazioni amministrative su di esso. Close libera la memoria allocata al processo chiuso.

Vedi anche

Si applica a

WaitForExit(TimeSpan)

Origine:
Process.cs
Origine:
Process.cs
Origine:
Process.cs

Indica al componente Process di attendere il tempo specificato per uscire dal processo associato.

public:
 bool WaitForExit(TimeSpan timeout);
public bool WaitForExit (TimeSpan timeout);
member this.WaitForExit : TimeSpan -> bool
Public Function WaitForExit (timeout As TimeSpan) As Boolean

Parametri

timeout
TimeSpan

Tempo di attesa per l'uscita dal processo associato.

Restituisce

true se il processo associato è stato terminato; in caso contrario, false.

Commenti

Vedere WaitForExit(Int32) le osservazioni.

Si applica a