문제

2 분 또는 3 분 후 다음 코드를 살펴본 후 프로세스를 어떻게 죽일 수 있습니까?

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



    }
}

그래서 나는 2 분 후에 그 창을 닫고 싶다

도움이 되었습니까?

해결책

사용 Process.WaitForExit 2 분의 시간 초과로 Process.Kill 만약에 WaitForExit 반환 false.

(당신은 또한 전화를 고려할 수도 있습니다 CloseMainWindow 대신에 Kill, 당신의 상황에 따라 - 또는 최소한 먼저 시도해보십시오. 프로세스에 질서 정연한 종료를 할 수있는 기회를 더 많이 제공하십시오.)

다른 팁

System.threading.timer를 사용하고 2 분 후에 다시 호출 할 TimerCallback (프로세스가 포함 된 TimerCallback)을 공급하십시오. 보다 여기에 예

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

편집 : Jon의 솔루션은 더 간단합니다. 유형이 적습니다. 폐기 reqd.

콘솔 애플리케이션 대신 Windows 서비스를 사용해야합니다. Windows 서비스에는 반복 수명주기가 있으므로 Windows 서비스에서 타이머 컨트롤을 사용하여 쉽게 달성 할 수 있습니다. 타이머를 간격으로 똑딱 거리고 특정 시간 간격으로 원하는 동작을 수행하십시오.

물론 콘솔 애플리케이션과 함께 타이머 컨트롤을 사용할 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top