Mate o processo após determinado tempo + C#
Pergunta
Como faço para matar um processo depois de dizer 2 ou três minutos, olhe para o código a seguir:
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);
}
}
}
Então, eu quero que a janela seja fechada após 2 minutos
Solução
Usar Process.WaitForExit
com um tempo limite de dois minutos e depois ligue Process.Kill
E se WaitForExit
retornou false
.
(Você também pode considerar ligar CloseMainWindow
ao invés de Kill
, dependendo da sua situação - ou pelo menos tente primeiro, para dar ao processo mais uma chance de fazer um desligamento ordenado.)
Outras dicas
Use um sistema.threading.timer e forneça um TimerCallback (que contém seu processo.kill) para ser chamado após 2 minutos. Ver o exemplo aqui
//p1.Kill(startingTime.AddMinutes(2));
using (var timer = new Timer(delegate { p1.Kill(); }, null, 2000, Timeout.Infinite))
{
Console.ReadLine(); // do whatever
}
Edit: a solução de Jon é mais simples .. menos tipos .. sem reqd de descarte.
Você deve tentar com o serviço Windows em vez de um aplicativo de console. O Windows Services possui ciclo de vida iterativo, para que isso possa ser facilmente alcançado usando um controle do timer no serviço Windows. Deixe o timer funcionar em um intervalo e executar a ação desejada em determinados intervalos de tempo.
Obviamente, você também pode usar o controle do timer com um aplicativo de console.