一定时间后杀死进程+ C#

时间:2009-06-22 15:22:14

标签: .net process c#-2.0

如果在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);
        }



    }
}

所以我希望IE窗口在2分钟后关闭

3 个答案:

答案 0 :(得分:23)

使用Process.WaitForExit超时两分钟,然后在WaitForExit返回false时致电Process.Kill

(您可能还要考虑调用CloseMainWindow而不是Kill,具体取决于您的具体情况 - 或者至少先尝试一下,以便为进程提供更多有序关机的机会。)

答案 1 :(得分:3)

使用System.Threading.Timer并提供一个TimerCallback(包含你的process.Kill),在2分钟后回调。 见the example here

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

编辑:Jon的解决方案更简单..更少的类型..没有处置要求。

答案 2 :(得分:0)

您应该尝试使用Windows服务而不是控制台应用程序。 Windows服务具有迭代生命周期,因此可以使用Windows服务中的计时器控件轻松实现。让计时器以一定间隔打勾并在特定时间间隔内执行所需的操作。

当然,您也可以使用控制台应用程序进行计时器控制。