Process.WaitForExit Méthode

Définition

Définit le délai d'attente pour l'arrêt du processus associé et bloque le thread en cours d'exécution jusqu'à l'expiration du délai d'attente ou l'arrêt du processus. Pour éviter de bloquer le thread actif, utilisez l'événement Exited.

Pour des exemples de code, consultez les pages de référence des propriétés StandardError et ExitCode.

Surcharges

WaitForExit()

Indique au composant Process d'attendre indéfiniment que le processus associé s'arrête.

WaitForExit(Int32)

Indique au composant Process d'attendre le nombre de millisecondes spécifié que le processus associé s'arrête.

WaitForExit(TimeSpan)

Indique au composant Process d’attendre la durée spécifiée pour que le processus associé se termine.

WaitForExit()

Indique au composant Process d'attendre indéfiniment que le processus associé s'arrête.

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

Exceptions

Impossible d’accéder au paramètre wait.

Aucun processus Id n’a été défini, et un Handle à partir duquel la propriété Id peut être déterminée n’existe pas.

- ou -

Aucun processus n’est associé à cet objet Process .

- ou -

Vous tentez d’appeler WaitForExit() pour un processus en cours d’exécution sur un ordinateur distant. Cette méthode est disponible uniquement pour les processus en cours d’exécution sur l’ordinateur local.

Exemples

Consultez la section Remarques de la StandardError page de référence de propriétés.

Remarques

WaitForExit() fait attendre le thread actuel jusqu’à ce que le processus associé se termine. Il doit être appelé une fois que toutes les autres méthodes sont appelées sur le processus. Pour éviter de bloquer le thread actif, utilisez l'événement Exited.

Cette méthode indique au Process composant d’attendre un délai infini avant que le processus et les gestionnaires d’événements se terminent. Cela peut entraîner l’arrêt de la réponse d’une application. Par exemple, si vous appelez CloseMainWindow pour un processus qui a une interface utilisateur, la demande adressée au système d’exploitation d’arrêter le processus associé peut ne pas être gérée si le processus est écrit pour ne jamais entrer dans sa boucle de message.

Notes

Dans .NET Framework 3.5 et versions antérieures, la WaitForExit() surcharge a attendu des MaxValue millisecondes (environ 24 jours), et non indéfiniment. En outre, les versions précédentes n’attendaient pas que les gestionnaires d’événements se terminent si le temps complet MaxValue était atteint.

Cette surcharge garantit que tout le traitement a été effectué, y compris la gestion des événements asynchrones pour la sortie standard redirigée. Vous devez utiliser cette surcharge après un appel à la surcharge lorsque la WaitForExit(Int32) sortie standard a été redirigée vers des gestionnaires d’événements asynchrones.

Lorsqu’un processus associé se ferme (c’est-à-dire lorsqu’il est arrêté par le système d’exploitation par le biais d’un arrêt normal ou anormal), le système stocke les informations d’administration sur le processus et retourne au composant qui avait appelé WaitForExit(). Le Process composant peut ensuite accéder aux informations, qui incluent le ExitTime, en utilisant le Handle à la sortie du processus.

Étant donné que le processus associé s’est arrêté, la Handle propriété du composant ne pointe plus vers une ressource de processus existante. Au lieu de cela, le handle peut être utilisé uniquement pour accéder aux informations du système d’exploitation sur la ressource de processus. Le système est conscient des handles des processus sortants qui n’ont pas été libérés par Process les composants, de sorte qu’il conserve les ExitTime informations et Handle en mémoire jusqu’à ce que le Process composant libère spécifiquement les ressources. Pour cette raison, chaque fois que vous appelez Start pour un Process instance, appelez Close lorsque le processus associé est terminé et que vous n’avez plus besoin d’informations administratives à ce sujet. Close libère la mémoire allouée au processus quitté.

Voir aussi

S’applique à

WaitForExit(Int32)

Indique au composant Process d'attendre le nombre de millisecondes spécifié que le processus associé s'arrête.

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

Paramètres

milliseconds
Int32

Délai, en millisecondes, à attendre que le processus associé s'arrête. Une valeur de 0 spécifie un retour immédiat et une valeur de -1 spécifie une attente infinie.

Retours

true si le processus associé s'est arrêté ; sinon, false.

Exceptions

Impossible d’accéder au paramètre wait.

Aucun processus Id n’a été défini, et un Handle à partir duquel la propriété Id peut être déterminée n’existe pas.

- ou -

Aucun processus n’est associé à cet objet Process .

- ou -

Vous tentez d’appeler WaitForExit(Int32) pour un processus en cours d’exécution sur un ordinateur distant. Cette méthode est disponible uniquement pour les processus en cours d’exécution sur l’ordinateur local.

milliseconds est un nombre négatif différent de -1, qui représente un délai d’attente infini.

Exemples

Consultez l’exemple de code pour la ExitCode propriété .

Remarques

WaitForExit(Int32) fait attendre le thread actuel jusqu’à ce que le processus associé se termine. Il doit être appelé une fois que toutes les autres méthodes sont appelées sur le processus. Pour éviter de bloquer le thread actif, utilisez l'événement Exited.

Cette méthode indique au Process composant d’attendre un laps de temps fini pour que le processus se termine. Si le processus associé ne se termine pas à la fin de l’intervalle, car la demande d’arrêt est refusée, false est retourné à la procédure appelante. Vous pouvez spécifier Timeout.Infinite pour millisecondset Process.WaitForExit(Int32) se comportera de la même façon que la WaitForExit() surcharge. Si vous passez 0 (zéro) à la méthode, elle retourne true uniquement si le processus a déjà été arrêté ; sinon, il retourne falseimmédiatement .

Notes

Dans .NET Framework 3.5 et versions antérieures, si milliseconds était -1, la WaitForExit(Int32) surcharge a attendu des MaxValue millisecondes (environ 24 jours), pas indéfiniment.

Lorsque la sortie standard a été redirigée vers des gestionnaires d’événements asynchrones, il est possible que le traitement de la sortie ne soit pas terminé lorsque cette méthode est retournée. Pour vous assurer que la gestion asynchrone des événements a été effectuée, appelez la WaitForExit() surcharge qui ne prend aucun paramètre après avoir reçu un true de cette surcharge. Pour vous assurer que l’événement Exited est géré correctement dans Windows Forms applications, définissez la SynchronizingObject propriété .

Lorsqu’un processus associé se ferme (est arrêté par le système d’exploitation par le biais d’un arrêt normal ou anormal), le système stocke les informations d’administration sur le processus et retourne au composant qui avait appelé WaitForExit(Int32). Le Process composant peut ensuite accéder aux informations, qui incluent le ExitTime, en utilisant le Handle à la sortie du processus.

Étant donné que le processus associé s’est arrêté, la Handle propriété du composant ne pointe plus vers une ressource de processus existante. Au lieu de cela, le handle peut être utilisé uniquement pour accéder aux informations du système d’exploitation sur la ressource de processus. Le système est conscient des handles des processus sortants qui n’ont pas été libérés par Process les composants, de sorte qu’il conserve les ExitTime informations et Handle en mémoire jusqu’à ce que le Process composant libère spécifiquement les ressources. Pour cette raison, chaque fois que vous appelez Start pour un Process instance, appelez Close lorsque le processus associé est terminé et que vous n’avez plus besoin d’informations administratives à ce sujet. Close libère la mémoire allouée au processus quitté.

Voir aussi

S’applique à

WaitForExit(TimeSpan)

Indique au composant Process d’attendre la durée spécifiée pour que le processus associé se termine.

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

Paramètres

timeout
TimeSpan

Délai d’attente avant la fin du processus associé.

Retours

true si le processus associé s'est arrêté ; sinon, false.

Remarques

Voir les WaitForExit(Int32) remarques.

S’applique à