Process.WaitForExit Process.WaitForExit Process.WaitForExit Process.WaitForExit Method

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.Sets the period of time to wait for the associated process to exit, and blocks the current thread of execution until the time has elapsed or the process has exited. Per evitare di bloccare il thread corrente, usare l'evento Exited.To avoid blocking the current thread, use the Exited event.

Per esempi di codice, vedere le pagine di riferimento alle proprietà StandardError e ExitCode.For code examples, see the StandardError and the ExitCode property reference pages.

Overload

WaitForExit() WaitForExit() WaitForExit() WaitForExit()

Indica al componente Process di attendere in modo indefinito la terminazione del processo associato.Instructs the Process component to wait indefinitely for the associated process to exit.

WaitForExit(Int32) WaitForExit(Int32) WaitForExit(Int32) WaitForExit(Int32)

Indica al componente Process di attendere per il numero specificato di millisecondi che il processo venga terminato.Instructs the Process component to wait the specified number of milliseconds for the associated process to exit.

WaitForExit() WaitForExit() WaitForExit() WaitForExit()

Indica al componente Process di attendere in modo indefinito la terminazione del processo associato.Instructs the Process component to wait indefinitely for the associated process to exit.

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

Eccezioni

Non è stato possibile accedere all'impostazione di attesa.The wait setting could not be accessed.

Non è stato impostato alcun Id di processo e non è presente alcun Handle da cui è possibile determinare la proprietà Id.No process Id has been set, and a Handle from which the Id property can be determined does not exist.

In alternativa-or- A questo oggetto Process non è associato alcun processo.There is no process associated with this Process object.

In alternativa-or- Si sta provando a chiamare WaitForExit() per un processo in esecuzione in un computer remoto.You are attempting to call WaitForExit() for a process that is running on a remote computer. Questo metodo è disponibile solo per i processi in esecuzione nel computer locale.This method is available only for processes that are running on the local computer.

Esempi

Vedere la sezione Osservazioni della pagina StandardError di riferimento della proprietà.See the Remarks section of the StandardError property reference page.

Commenti

WaitForExit()fa in modo che il thread corrente attenda finché non termina il processo associato.WaitForExit() makes the current thread wait until the associated process terminates. Deve essere chiamato dopo che tutti gli altri metodi vengono chiamati nel processo.It should be called after all other methods are called on the process. Per evitare di bloccare il thread corrente, usare l'evento Exited.To avoid blocking the current thread, use the Exited event.

Questo metodo indica Process al componente di attendere un periodo di tempo infinito per la chiusura del processo e dei gestori di eventi.This method instructs the Process component to wait an infinite amount of time for the process and event handlers to exit. Questa operazione può causare l'interruzione della risposta di un'applicazione.This can cause an application to stop responding. Se, ad esempio, si CloseMainWindow chiama per un processo che dispone di un'interfaccia utente, la richiesta al sistema operativo di terminare il processo associato potrebbe non essere gestita se il processo viene scritto in modo da non immettere mai il ciclo di messaggi.For example, if you call CloseMainWindow for a process that has a user interface, the request to the operating system to terminate the associated process might not be handled if the process is written to never enter its message loop.

Nota

In e versioni precedenti, l' WaitForExit() Overload era in attesa MaxValue di millisecondi (circa 24 giorni), non a tempo indefinito. .NET Framework 3.5.NET Framework 3.5In the .NET Framework 3.5.NET Framework 3.5 and earlier versions, the WaitForExit() overload waited for MaxValue milliseconds (approximately 24 days), not indefinitely. Inoltre, le versioni precedenti non aspettavano la chiusura dei gestori eventi se è stata raggiunta l'ora completa MaxValue .Also, previous versions did not wait for the event handlers to exit if the full MaxValue time was reached.

Questo overload garantisce che tutte le elaborazioni siano state completate, inclusa la gestione di eventi asincroni per l'output standard reindirizzato.This overload ensures that all processing has been completed, including the handling of asynchronous events for redirected standard output. Utilizzare questo overload dopo una chiamata all'overload quando l' WaitForExit(Int32) output standard è stato reindirizzato ai gestori eventi asincroni.You should use this overload after a call to the WaitForExit(Int32) overload when standard output has been redirected to asynchronous event handlers.

Quando un processo associato viene chiuso (ovvero, quando viene arrestato dal sistema operativo tramite una chiusura normale o anomala), il sistema archivia le informazioni amministrative sul processo e torna al componente che ha chiamato WaitForExit().When an associated process exits (that is, when it is shut down by the operation system through a normal or abnormal termination), the system stores administrative information about the process and returns to the component that had called WaitForExit(). Il Process componente può quindi accedere alle informazioni, ExitTimeincluso, usando il Handle metodo al processo terminato.The Process component can then access the information, which includes the ExitTime, by using the Handle to the exited process.

Poiché il processo associato è stato terminato, la Handle proprietà del componente non punta più a una risorsa di processo esistente.Because the associated process has exited, the Handle property of the component no longer points to an existing process resource. È invece possibile usare l'handle solo per accedere alle informazioni del sistema operativo relative alla risorsa di processo.Instead, the handle can be used only to access the operating system's information about the process resource. Il sistema è in grado di riconoscere gli handle ai processi usciti che non sono Process stati rilasciati dai componenti ExitTime , Handle quindi mantiene le informazioni e Process in memoria fino a quando il componente non libera in modo specifico le risorse.The system is aware of handles to exited processes that have not been released by Process components, so it keeps the ExitTime and Handle information in memory until the Process component specifically frees the resources. Per questo motivo, ogni volta che si Start chiama un' Process istanza di, Close chiamare quando il processo associato viene terminato e non sono più necessarie informazioni amministrative su di essa.For this reason, any time you call Start for a Process instance, call Close when the associated process has terminated and you no longer need any administrative information about it. Closelibera la memoria allocata al processo terminato.Close frees the memory allocated to the exited process.

Sicurezza

LinkDemand
per l'attendibilità totale per il chiamante immediato.for full trust for the immediate caller. Impossibile utilizzare questo membro in codice parzialmente attendibile.This member cannot be used by partially trusted code.

Vedi anche

WaitForExit(Int32) WaitForExit(Int32) WaitForExit(Int32) WaitForExit(Int32)

Indica al componente Process di attendere per il numero specificato di millisecondi che il processo venga terminato.Instructs the Process component to wait the specified number of milliseconds for the associated process to exit.

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

Quantità di tempo, espressa in millisecondi, in base alla quale viene attesa la terminazione del processo associato.The amount of time, in milliseconds, to wait for the associated process to exit. Il valore massimo è il valore Integer a 32 bit più alto possibile, che rappresenta l'infinito per il sistema operativo.The maximum is the largest possible value of a 32-bit integer, which represents infinity to the operating system.

Restituisce

true se il processo associato è stato terminato; in caso contrario, false.true if the associated process has exited; otherwise, false.

Eccezioni

Non è stato possibile accedere all'impostazione di attesa.The wait setting could not be accessed.

Non è stato impostato alcun Id di processo e non è presente alcun Handle da cui è possibile determinare la proprietà Id.No process Id has been set, and a Handle from which the Id property can be determined does not exist.

-oppure--or- A questo oggetto Process non è associato alcun processo.There is no process associated with this Process object.

-oppure--or- Si sta provando a chiamare WaitForExit(Int32) per un processo in esecuzione in un computer remoto.You are attempting to call WaitForExit(Int32) for a process that is running on a remote computer. Questo metodo è disponibile solo per i processi in esecuzione nel computer locale.This method is available only for processes that are running on the local computer.

milliseconds è un numero negativo diverso da -1, che rappresenta un timeout infinito.milliseconds is a negative number other than -1, which represents an infinite time-out.

Esempi

Vedere l'esempio di codice per ExitCode la proprietà.See the code example for the ExitCode property.

Commenti

WaitForExit(Int32)fa in modo che il thread corrente attenda finché non termina il processo associato.WaitForExit(Int32) makes the current thread wait until the associated process terminates. Deve essere chiamato dopo che tutti gli altri metodi vengono chiamati nel processo.It should be called after all other methods are called on the process. Per evitare di bloccare il thread corrente, usare l'evento Exited.To avoid blocking the current thread, use the Exited event.

Questo metodo indica Process al componente di attendere un periodo di tempo limitato per la chiusura del processo.This method instructs the Process component to wait a finite amount of time for the process to exit. Se il processo associato non viene chiuso entro la fine dell'intervallo perché la richiesta di terminazione viene negata false , viene restituito alla procedura chiamante.If the associated process does not exit by the end of the interval because the request to terminate is denied, false is returned to the calling procedure. È possibile specificare Timeout.Infinite per millisecondse Process.WaitForExit(Int32) comportarsi in modo WaitForExit() analogo all'overload.You can specify Timeout.Infinite for milliseconds, and Process.WaitForExit(Int32) will behave the same as the WaitForExit() overload. Se si passa 0 (zero) al metodo, viene restituito true solo se il processo è già stato terminato; in caso contrario, restituisce falseimmediatamente.If you pass 0 (zero) to the method, it returns true only if the process has already exited; otherwise, it immediately returns false.

Nota

In e versioni precedenti, se milliseconds era-1, l' WaitForExit(Int32) Overload era in attesa MaxValue di millisecondi (circa 24 giorni), non a tempo indefinito. .NET Framework 3.5.NET Framework 3.5In the .NET Framework 3.5.NET Framework 3.5 and earlier versions, if milliseconds was -1, the WaitForExit(Int32) overload waited for MaxValue milliseconds (approximately 24 days), not indefinitely.

Quando l'output standard viene reindirizzato ai gestori eventi asincroni, è possibile che l'elaborazione dell'output non venga completata quando il metodo restituisce un risultato.When standard output has been redirected to asynchronous event handlers, it is possible that output processing will not have completed when this method returns. Per assicurarsi che la gestione asincrona degli eventi sia stata completata, WaitForExit() chiamare l'overload che non accetta parametri dopo true la ricezione di un oggetto da questo overload.To ensure that asynchronous event handling has been completed, call the WaitForExit() overload that takes no parameter after receiving a true from this overload. Per garantire che l' Exited evento venga gestito correttamente nelle applicazioni Windows Forms, impostare la SynchronizingObject proprietà.To help ensure that the Exited event is handled correctly in Windows Forms applications, set the SynchronizingObject property.

Quando un processo associato viene terminato (arrestato dal sistema operativo tramite una chiusura normale o anomala), il sistema archivia le informazioni amministrative sul processo e torna al componente che ha chiamato WaitForExit(Int32).When an associated process exits (is shut down by the operating system through a normal or abnormal termination), the system stores administrative information about the process and returns to the component that had called WaitForExit(Int32). Il Process componente può quindi accedere alle informazioni, ExitTimeincluso, usando il Handle metodo al processo terminato.The Process component can then access the information, which includes the ExitTime, by using the Handle to the exited process.

Poiché il processo associato è stato terminato, la Handle proprietà del componente non punta più a una risorsa di processo esistente.Because the associated process has exited, the Handle property of the component no longer points to an existing process resource. È invece possibile usare l'handle solo per accedere alle informazioni del sistema operativo relative alla risorsa di processo.Instead, the handle can be used only to access the operating system's information about the process resource. Il sistema è in grado di riconoscere gli handle ai processi usciti che non sono Process stati rilasciati dai componenti ExitTime , Handle quindi mantiene le informazioni e Process in memoria fino a quando il componente non libera in modo specifico le risorse.The system is aware of handles to exited processes that have not been released by Process components, so it keeps the ExitTime and Handle information in memory until the Process component specifically frees the resources. Per questo motivo, ogni volta che si Start chiama un' Process istanza di, Close chiamare quando il processo associato viene terminato e non sono più necessarie informazioni amministrative su di essa.For this reason, any time you call Start for a Process instance, call Close when the associated process has terminated and you no longer need any administrative information about it. Closelibera la memoria allocata al processo terminato.Close frees the memory allocated to the exited process.

Sicurezza

LinkDemand
per l'attendibilità totale per il chiamante immediato.for full trust for the immediate caller. Impossibile utilizzare questo membro in codice parzialmente attendibile.This member cannot be used by partially trusted code.

Vedi anche

Si applica a