2010-08-19 6 views
15

Je souhaite supprimer un processus s'exécutant sur la machine en utilisant taskkill s'il est toujours en cours d'exécution après X secondes (un service Windows a été arrêté mais cela prend du temps pour les processus de dissapear) Quelle est la manière la plus correcte d'accomplir ce qui précède en C# (.net 2.0 ou éventuellement 3.0)?Attendre que le processus ne soit plus exécuté OU jusqu'à ce que le délai soit écoulé, selon la première éventualité

J'ai une méthode utilitaire pour vérifier si un processus est toujours en cours, compte tenu du nom du processus (en utilisant Process.GetProcesses()). (Comme le processus n'engendré par mon code, je ne peux pas utiliser WaitTillExit savoir quand il ne fonctionne plus)

PS: le processus fonctionne sur une machine distante

Répondre

31

En fait, vous pouvez utiliser Process.WaitForExit().

obtenir simplement le processus d'attendre via

Process p = Process.GetProcessById(iYourID); 

Et puis appelez

if(!p.WaitForExit(iYourInterval)) 
{ 
    p.Kill(); 
} 

Vous pouvez également obtenir des processus via leur nom par

Process.GetProcessesByName(strYourProcessName); 
+0

Cool! Maintenant, si je peux le faire fonctionner sur une machine distante, c'est exactement ce dont j'ai besoin (puisque j'ai besoin de tuer tout un tas de processus avec le même nom d'exe) Merci! – akapulko2020

11

Vous pouvez appeler Process.WaitForExit, passer le délai d'attente approprié. De cette façon, vous n'aurez pas besoin d'utiliser votre propre vérification pour voir si le processus est toujours en cours d'exécution.

+0

Je ne sais pas comment cela permet de "tuer" le processus si elle est en cours d'exécution après l'expiration du délai, cependant ... – akapulko2020

+0

Je pensais que vous alliez utiliser t askkill? –

+0

'WaitForExit' renvoie' false' si le processus est toujours en cours d'exécution après le délai d'expiration; utilisez ceci pour déterminer s'il faut le tuer –

8
Process p = ... 

bool exited = p.WaitForExit(10000); // 10 seconds timeout 
Questions connexes