Process.WaitForExit Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Imposta il periodo di tempo di attesa per l'uscita del processo associato e blocca il thread corrente di esecuzione fino alla scadenza del tempo o all'uscita del processo. Per evitare di bloccare il thread corrente, usare l'evento Exited .
Per esempi di codice, vedere le pagine di riferimento alle StandardErrorExitCode proprietà e .
Overload
| Nome | Descrizione |
|---|---|
| WaitForExit() |
Indica al Process componente di attendere per un periodo illimitato di uscita dal processo associato. |
| WaitForExit(Int32) |
Indica al Process componente di attendere il numero specificato di millisecondi per l'uscita del processo associato. |
| WaitForExit(TimeSpan) |
Indica al componente Processo di attendere l'intervallo di tempo specificato per l'uscita del processo associato. |
WaitForExit()
- Origine:
- Process.cs
- Origine:
- Process.cs
- Origine:
- Process.cs
- Origine:
- Process.cs
- Origine:
- Process.cs
Indica al Process componente di attendere per un periodo illimitato di uscita dal processo associato.
public:
void WaitForExit();
public void WaitForExit();
member this.WaitForExit : unit -> unit
Public Sub WaitForExit ()
Eccezioni
Impossibile accedere all'impostazione di attesa.
Non è stato impostato alcun processo Id e un oggetto Handle da cui è possibile determinare la Id proprietà non esiste.
oppure
A questo Process oggetto non è associato alcun processo.
oppure
Si sta tentando di 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 delle 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 nel processo. Per evitare di bloccare il thread corrente, usare l'evento Exited .
Questo metodo indica al Process componente di attendere una quantità infinita 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 per 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 di messaggi.
Annotazioni
In .NET Framework 3.5 e versioni precedenti, l'overload WaitForExit() ha atteso i millisecondi (circa 24 giorni), non per un periodo illimitato MaxValue . Inoltre, le versioni precedenti non attendevano l'uscita dei gestori eventi se è stato raggiunto il tempo pieno MaxValue .
Questo overload garantisce che tutte le elaborazioni siano state completate, 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 terminazione normale o anomala, il sistema archivia le informazioni amministrative sul processo e torna al componente che aveva chiamato WaitForExit(). Il Process componente può quindi accedere alle informazioni, che includono , ExitTimeusando per Handle il processo chiuso.
Poiché il processo associato è stato chiuso, la Handle proprietà del componente non punta più a una risorsa di processo esistente. Al contrario, l'handle può essere usato solo per accedere alle informazioni del sistema operativo sulla risorsa di processo. Il sistema è a conoscenza degli handle per i processi chiusi che non sono stati rilasciati dai Process componenti, quindi mantiene le ExitTime informazioni e Handle in memoria fino a quando il Process componente libera specificamente le risorse. Per questo motivo, ogni volta che si chiama Start per un'istanza Process di , chiamare Close 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
- Origine:
- Process.cs
- Origine:
- Process.cs
Indica al Process componente di attendere il numero specificato di millisecondi per l'uscita del processo associato.
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, per attendere la chiusura del processo associato. Il valore 0 specifica un valore restituito immediato e un valore di -1 specifica un'attesa infinita.
Restituisce
true se il processo associato è stato chiuso; in caso contrario, false.
Eccezioni
Impossibile accedere all'impostazione di attesa.
Non è stato impostato alcun processo Id e un oggetto Handle da cui è possibile determinare la Id proprietà non esiste.
oppure
A questo Process oggetto non è associato alcun processo.
oppure
Si sta tentando di 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
Vedere l'esempio di codice per la ExitCode proprietà .
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 nel processo. Per evitare di bloccare il thread corrente, usare l'evento Exited .
Questo metodo indica al Process 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 routine 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à stato chiuso; in caso contrario, restituisce falseimmediatamente .
Annotazioni
In .NET Framework 3.5 e versioni precedenti, se milliseconds è stato -1, l'overload WaitForExit(Int32) ha atteso millisecondi (circa 24 giorni), non per un periodo illimitato MaxValue .
Quando l'output standard è stato reindirizzato ai gestori eventi asincroni, è possibile che l'elaborazione dell'output non venga completata al termine di questo metodo. Per assicurarsi che la gestione asincrona degli eventi sia stata completata, chiamare l'overload WaitForExit() che non accetta alcun parametro dopo aver ricevuto un true oggetto da questo overload. Per garantire che l'evento Exited venga gestito correttamente nelle applicazioni Windows Form, impostare la SynchronizingObject proprietà .
Quando un processo associato viene chiuso (viene arrestato dal sistema operativo tramite una terminazione normale o anomala), il sistema archivia le informazioni amministrative sul processo e torna al componente che aveva chiamato WaitForExit(Int32). Il Process componente può quindi accedere alle informazioni, che includono , ExitTimeusando per Handle il processo chiuso.
Poiché il processo associato è stato chiuso, la Handle proprietà del componente non punta più a una risorsa di processo esistente. Al contrario, l'handle può essere usato solo per accedere alle informazioni del sistema operativo sulla risorsa di processo. Il sistema è a conoscenza degli handle per i processi chiusi che non sono stati rilasciati dai Process componenti, quindi mantiene le ExitTime informazioni e Handle in memoria fino a quando il Process componente libera specificamente le risorse. Per questo motivo, ogni volta che si chiama Start per un'istanza Process di , chiamare Close 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
- Origine:
- Process.cs
- Origine:
- Process.cs
Indica al componente Processo di attendere l'intervallo di tempo specificato per l'uscita del 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
Quantità di tempo di attesa per l'uscita del processo associato.
Restituisce
true se il processo associato è stato chiuso; in caso contrario, false.
Commenti
Vedere WaitForExit(Int32) le osservazioni.