Process.WaitForExit Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Définit la période d’attente de la sortie du processus associé et bloque le thread d’exécution actuel jusqu’à ce que le temps s’est écoulé ou que le processus ait quitté. Pour éviter de bloquer le thread actuel, utilisez l’événement Exited .
Pour obtenir des exemples de code, consultez les StandardError pages de référence de propriétés et les pages de référence des ExitCode propriétés.
Surcharges
| Nom | Description |
|---|---|
| WaitForExit() |
Process Indique au composant d’attendre indéfiniment la sortie du processus associé. |
| WaitForExit(Int32) |
Indique au Process composant d’attendre le nombre spécifié de millisecondes pour que le processus associé se termine. |
| WaitForExit(TimeSpan) |
Indique au composant Processus d’attendre la durée spécifiée pour que le processus associé se termine. |
WaitForExit()
- Source:
- Process.cs
- Source:
- Process.cs
- Source:
- Process.cs
- Source:
- Process.cs
- Source:
- Process.cs
Process Indique au composant d’attendre indéfiniment la sortie du processus associé.
public:
void WaitForExit();
public void WaitForExit();
member this.WaitForExit : unit -> unit
Public Sub WaitForExit ()
Exceptions
Impossible d’accéder au paramètre d’attente.
Aucun processus Id n’a été défini et une Handle propriété à partir de laquelle la Id propriété peut être déterminée n’existe pas.
- ou -
Aucun processus n’est associé à cet Process objet.
- ou -
Vous tentez d’appeler WaitForExit() un processus qui s’exécute sur un ordinateur distant. Cette méthode est disponible uniquement pour les processus qui s’exécutent sur l’ordinateur local.
Exemples
Consultez la section Remarques de la StandardError page de référence de propriété.
Remarques
WaitForExit() fait attendre le thread actuel jusqu’à ce que le processus associé se termine. Elle doit être appelée après que toutes les autres méthodes soient appelées sur le processus. Pour éviter de bloquer le thread actuel, utilisez l’événement Exited .
Cette méthode indique au Process composant d’attendre une durée infinie pour que le processus et les gestionnaires d’événements se terminent. Cela peut entraîner l’arrêt de réponse d’une application. Par exemple, si vous appelez CloseMainWindow un processus qui a une interface utilisateur, la demande adressée au système d’exploitation pour arrêter le processus associé peut ne pas être gérée si le processus est écrit pour ne jamais entrer sa boucle de message.
Note
Dans .NET Framework 3.5 et versions antérieures, la WaitForExit() surcharge a attendu MaxValue des 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 plein MaxValue a été 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 termine (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 administratives sur le processus et retourne au composant appelé WaitForExit(). Le Process composant peut ensuite accéder aux informations, qui incluent le ExitTime, à l’aide du Handle processus sortant.
Étant donné que le processus associé a quitté, la Handle propriété du composant ne pointe plus vers une ressource de processus existante. Au lieu de cela, le handle ne peut être utilisé que 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 informations et Handle les ExitTime informations en mémoire jusqu’à ce que le Process composant libère spécifiquement les ressources. Pour cette raison, chaque fois que vous appelez Start une Process instance, appelez Close lorsque le processus associé s’est arrêté 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)
- Source:
- Process.cs
- Source:
- Process.cs
- Source:
- Process.cs
- Source:
- Process.cs
- Source:
- Process.cs
Indique au Process composant d’attendre le nombre spécifié de millisecondes pour que le processus associé se termine.
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
Durée, en millisecondes, d’attente de la sortie du processus associé. 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é a quitté ; sinon, false.
Exceptions
Impossible d’accéder au paramètre d’attente.
Aucun processus Id n’a été défini et une Handle propriété à partir de laquelle la Id propriété peut être déterminée n’existe pas.
- ou -
Aucun processus n’est associé à cet Process objet.
- ou -
Vous tentez d’appeler WaitForExit(Int32) un processus qui s’exécute sur un ordinateur distant. Cette méthode est disponible uniquement pour les processus qui s’exécutent sur l’ordinateur local.
milliseconds est un nombre négatif autre que -1, qui représente un délai d’attente infini.
Exemples
Consultez l’exemple de code de la ExitCode propriété.
Remarques
WaitForExit(Int32) fait attendre le thread actuel jusqu’à ce que le processus associé se termine. Elle doit être appelée après que toutes les autres méthodes soient appelées sur le processus. Pour éviter de bloquer le thread actuel, utilisez l’événement Exited .
Cette méthode indique au Process composant d’attendre un délai 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 elle est retournée à la procédure appelante. Vous pouvez spécifier Timeout.Infinite pour milliseconds, et 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à quitté ; sinon, il retourne falseimmédiatement .
Note
Dans .NET Framework 3.5 et versions antérieures, si milliseconds elle était -1, la WaitForExit(Int32) surcharge a attendu MaxValue des 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 sortie ne soit pas terminé lorsque cette méthode retourne. Pour vous assurer que la gestion des événements asynchrones a été terminée, appelez la WaitForExit() surcharge qui ne prend aucun paramètre après avoir reçu une true de cette surcharge. Pour vous assurer que l’événement Exited est géré correctement dans les applications Windows Forms, définissez la SynchronizingObject propriété.
Lorsqu’un processus associé quitte (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 administratives sur le processus et retourne au composant appelé WaitForExit(Int32). Le Process composant peut ensuite accéder aux informations, qui incluent le ExitTime, à l’aide du Handle processus sortant.
Étant donné que le processus associé a quitté, la Handle propriété du composant ne pointe plus vers une ressource de processus existante. Au lieu de cela, le handle ne peut être utilisé que 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 informations et Handle les ExitTime informations en mémoire jusqu’à ce que le Process composant libère spécifiquement les ressources. Pour cette raison, chaque fois que vous appelez Start une Process instance, appelez Close lorsque le processus associé s’est arrêté 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)
- Source:
- Process.cs
- Source:
- Process.cs
- Source:
- Process.cs
- Source:
- Process.cs
- Source:
- Process.cs
Indique au composant Processus 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
Durée d’attente de la sortie du processus associé.
Retours
true si le processus associé a quitté ; sinon, false.
Remarques
Voir WaitForExit(Int32) les remarques.