Tuer le processus après un certain temps + C #
Question
comment puis-je tuer un processus après, disons, 2 ou 3 minutes, regardez le code suivant:
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 d'IE soit fermée après 2 minutes
La solution
Utilisez Process.WaitForExit
avec un délai de deux minutes, puis appelez le Processus .Kill
si WaitForExit
a renvoyé false
.
(Vous pouvez également envisager d'appeler CloseMainWindow
au lieu de Kill
, selon votre situation - ou du moins essayez-le d'abord, pour donner au processus davantage l'occasion de procéder à un arrêt ordonné.)
Autres conseils
Utilisez un System.Threading.Timer et fournissez un TimerCallback (qui contient votre processus.Kill) à rappeler après 2 minutes. Voir l'exemple ici
//p1.Kill(startingTime.AddMinutes(2));
using (var timer = new Timer(delegate { p1.Kill(); }, null, 2000, Timeout.Infinite))
{
Console.ReadLine(); // do whatever
}
Modifier: la solution de Jon est plus simple ... moins de types .. pas d'élimination requise.
Vous devriez essayer avec Windows Service au lieu d’une application console. Les services Windows ont un cycle de vie itératif, ce qui peut être facilement réalisé à l'aide d'un contrôle du minuteur dans le service Windows. Laissez la minuterie se déclencher à intervalles réguliers et effectuez l'action souhaitée à certains intervalles de temps.
Bien sûr, vous pouvez également utiliser le contrôle du minuteur avec une application console.