나는 BackgroundWorker 구성 스레드가 살아 있는지 확인하는 방법을 알아 내려고 노력하고 있어요 (즉 아직 실행 스레드는 기본적으로 간단한 무한 루프로 구현됩니다.BackgroundWorker의 IsBusy가 "IsAlive"와 같은가요?
while (AllConditionsMet())
{
DoSomeMagic();
Thread.Sleep(10000);
}
가 IsAlive()
가장 가까운 것은 내가 지금까지 발견 하지만 내 스레드 수면() 대부분의 시간, 나는이 일을 할 것입니다 있는지 확실하지 않다에요 것을 IsBusy 재산 주어진다
내가 할 IsBusy에 셀 수 :.
if (!myWorker.IsBusy)
RestartWorker();
또는 문제가 있습니까? docs에서
isBusy가 false 인 경우 Backgroundworker가 작업을 수행하지 않으므로 표시된 코드를 사용하여 문제가 발생하지 않습니다. 작업자가 시작되지 않았으므로 "RestartWorker()"메서드 만 잘못된 것입니다. 그러나 그것은 프로그래밍 문제보다 더 많은 언어입니다. – jAC
스레드를 다시 시작하기 위해 코드를 구현하면 문제가 발생합니다. 실패 조건을 감지하고 스레드를 종료하고 완전히 새로운 스레드를 다시 시작하는 것이 더 나을 것입니다. 그렇지 않으면 교착 상태가 발생할 가능성이 큽니다. –