낮은 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 초가 임의 임에 유의하십시오. 그것은 더 길거나 더 짧을 수 있습니다.이 코드를 계속 반복해야하지만 효율적으로 잘하면 누군가는 은혜를 가지고 있습니다. ul 솔루션?
병렬 foreach를 사용하면 여러 프로세스를 동시에 중지 할 수 있으므로 전체 실행 시간이 더 짧아집니다. –
@arcaine : 어떤 식 으로든 5에서 3을 처리하면 어떻게 될까요? 초? 다른 사람이 시작하도록 살해되어야 하는가? – Tigran
나는 당신의 질문을 이해할 수 있는지 모르겠다. 하나의 퍼런은 항상 실행되어야하는 프로그램이다. WerFault는 충돌 과정이다. 하나의 프로세스를 온라인 상태로 만들 수는 없다. 왜냐하면 .HasExited가 충돌 단계를 확인하십시오. 충돌 프로세스를 확인하고 새로운 재부팅을 허용하기 위해 죽이는 것입니다. – arcanine