2009-06-22 9 views
8

comment puis-je tuer un processus après dire 2 ou trois minutes regarder le code suivant:Kill Process après un certain temps + C#

class Program 
{ 
    static void Main(string[] args) 
    { 

     try 
     { 
      //declare new process and name it p1 
      Process p1 = Process.Start("iexplore", "http://www.google.com"); 
      //get starting time of process 
      DateTime startingTime = p1.StartTime; 
      Console.WriteLine(startingTime); 
      //add a minute to startingTime 
      DateTime endTime = startingTime.AddMinutes(1); 
      //I don't know how to kill process after certain time 
      //code below don't work, How Do I kill this process after a minute or 2 
      p1.Kill(startingTime.AddMinutes(2));     
      Console.ReadLine(); 


     } 
     catch (Exception ex) 
     { 

      Console.WriteLine("Problem with Process:{0}", ex.Message); 
     } 



    } 
} 

donc je veux que la fenêtre IE fermée après 2 minutes

+1

p1.WaitForExit (60000); // DateTime endTime2; p1.CloseMainWindow(); // endTime2 = p1.ExitTime; p1.Fermer(); – Developer

Répondre

21

Utilisez Process.WaitForExit avec un délai d'expiration de deux minutes, puis appelez Process.Kill si WaitForExit a renvoyé false.

(Vous pourriez aussi envisager d'appeler CloseMainWindow au lieu de Kill, en fonction de votre situation -. Ou au moins essayer d'abord, de donner le processus plus d'une chance de faire un arrêt ordonné)

+0

Merci pour l'aide john utilisé la méthode des fenêtres de fermeture qui fonctionne parfaitement – Developer

0

Vous devriez essayer avec le service Windows au lieu d'une application console. Les services Windows ont un cycle de vie itératif, ce qui peut être facilement réalisé en utilisant un contrôle de minuterie dans le service Windows. Laisser la minuterie cochée à un intervalle et effectuer l'action désirée à certains intervalles de temps.

Bien sûr, vous pouvez également utiliser le contrôle de minuterie avec une application console.

3

Utilisez un System.Threading.Timer et fournissez un TimerCallback (qui contient votre processus.Kill) à rappeler après 2 minutes. Voir the example here

//p1.Kill(startingTime.AddMinutes(2)); 
using (var timer = new Timer(delegate { p1.Kill(); }, null, 2000, Timeout.Infinite)) 
{ 
    Console.ReadLine(); // do whatever 
} 

Edit: la solution de Jon est plus simple .. moins types .. pas élimination REQUISES.

Questions connexes