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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top