Убить процесс через определенное время + C #

StackOverflow https://stackoverflow.com/questions/1027811

  •  06-07-2019
  •  | 
  •  

Вопрос

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

 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 минуты

Это было полезно?

Решение

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

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

Другие советы

Используйте 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
}

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top