我基本上需要每5秒左右运行一次这个代码:
if (oneperone.HasExited)
{
oneperone.Start();
}
foreach (Process p in System.Diagnostics.Process.GetProcessesByName("WerFault"))
{
try
{
p.Kill();
p.WaitForExit(); // possibly with a timeout
}
catch (Win32Exception winException)
{
// process was terminating or can't be terminated - deal with it
}
catch (InvalidOperationException invalidException)
{
// process has already exited - might be able to let this one go
}
}
我尝试使用计时器,示例如下:http://msdn.microsoft.com/en-us/library/system.windows.forms.timer.aspx我试着用系统线程等待命令运行一个无限循环,但两者都给出了不可接受的性能,而且系统等待命令显然会锁定线程,我需要在5秒迭代之间做其他事情
请记住,5秒是任意的,它可以更长也可以更短。我只需要不断重复这段代码,但希望有人能有一个优雅的解决方案?
可能有更好的方法来实现您的需求,但以下是您想要的建议:
只要你不在每次迭代中进行长时间昂贵的操作,睡眠就会让你的CPU使用率很低。
使用Sleep调用创建新线程,并将进程排队以在某个队列中终止(以避免在该线程上进行长时间操作和重复"终止请求");在单独的线程/工作线程上终止队列中的进程。避免多次尝试终止同一进程。