在CPU使用率较低的情况下,每隔X秒轮询一个进程



我基本上需要每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调用创建新线程,并将进程排队以在某个队列中终止(以避免在该线程上进行长时间操作和重复"终止请求");在单独的线程/工作线程上终止队列中的进程。避免多次尝试终止同一进程。

相关内容

  • 没有找到相关文章

最新更新