1
我基本上需要運行這段代碼,每5秒左右:輪詢的過程與低CPU使用率每X秒
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秒的事情是任意的它可以更長或更短我只需要不斷重複此代碼,但有效地希望有人有一個優雅ul解決方案?
您可以使用並行foreach,因此您可以同時停止多個進程,並且總體執行時間將更短 – 2012-02-13 20:35:59
@arcaine:如果從(說)5處理第三個,出於任何原因運行超過5秒?它應該被殺死,所以另一個應該開始? – Tigran 2012-02-13 20:42:56
我不確定我是否理解你的問題,一個人是一個需要一直運行的程序,WerFault是崩潰過程,如果因爲.HasExited不會在一個過程中觸發崩潰到邊一步這我正在檢查崩潰過程,並將其殺死,以允許一個新的重新啓動 – arcanine 2012-02-13 20:46:06