Убить процесс через определенное время + C # - PullRequest
11 голосов
/ 22 июня 2009

как убить процесс, скажем, через 2 или три минуты посмотрите на следующий код:

 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);
        }



    }
}

так что я хочу, чтобы окно IE закрывалось через 2 минуты

Ответы [ 3 ]

23 голосов
/ 22 июня 2009

Используйте Process.WaitForExit с таймаутом в две минуты, а затем позвоните Process.Kill, если WaitForExit вернул false.

(Вы также можете подумать о том, чтобы позвонить CloseMainWindow вместо Kill, в зависимости от вашей ситуации - или хотя бы попробовать сначала, чтобы дать процессу больше шансов сделать упорядоченное завершение работы .)

3 голосов
/ 22 июня 2009

Используйте System.Threading.Timer и укажите TimerCallback (который содержит ваш process.Kill), который будет вызываться через 2 минуты. См. пример здесь

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

Редактировать: решение Джона более простое ... меньше типов .. нет требования к утилизации.

0 голосов
/ 22 июня 2009

Вы должны попробовать использовать Windows Service вместо консольного приложения. Службы Windows имеют итеративный жизненный цикл, поэтому этого легко достичь, используя элемент управления таймером в службе Windows. Дайте таймеру помечать интервал и выполняйте желаемые действия через определенные промежутки времени.

Конечно, вы можете использовать управление таймером и с консольным приложением.

...