一定时间后杀死进程+ C#
Posted
技术标签:
【中文标题】一定时间后杀死进程+ C#【英文标题】:Kill Process after certain time + C# 【发布时间】:2009-06-22 15:22:13 【问题描述】:我如何在 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 分钟后关闭
【问题讨论】:
p1.WaitForExit(60000); // 日期时间 endTime2; p1.CloseMainWindow(); //endTime2 = p1.ExitTime; p1.Close(); 【参考方案1】:使用Process.WaitForExit
,超时两分钟,如果WaitForExit
返回false
,则调用Process.Kill
。
(您也可以考虑调用CloseMainWindow
而不是Kill
,具体取决于您的情况 - 或者至少先尝试一下,让进程有更多机会进行有序关闭。)
【讨论】:
感谢约翰使用 closemain windows 方法的帮助,效果很好【参考方案2】:使用 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 的解决方案更简单.. 类型更少.. 没有 Disposal reqd。
【讨论】:
【参考方案3】:您应该尝试使用 Windows 服务而不是控制台应用程序。 Windows 服务具有迭代生命周期,因此可以使用 Windows 服务中的计时器控件轻松实现这一点。让计时器以一定的时间间隔滴答作响,并在特定的时间间隔内执行所需的操作。
当然,您也可以在控制台应用程序中使用计时器控制。
【讨论】:
以上是关于一定时间后杀死进程+ C#的主要内容,如果未能解决你的问题,请参考以下文章