내 특정 시나리오 : - 주 스레드가 작업 스레드를 시작합니다.Monitor.Wait, Pulse - 작업자 스레드가 조건부로 실제 작업자 스레드로 동작해야하는 경우
wokerThread.Start(lockObj);
lock(lockObj)
Monitor.Wait(lockObj);
어딘가에 - 는 작업자 스레드 중 하나가 완료 (재미 있은 예) 또는 작업자 스레드 자체가 내가 메인 스레드에서했던 그래서 뭐,
좋아에 가서 메인 스레드를 통보 할 때까지 메인 쓰레드 자체를 차단해야 또한
if(mainThreadShouldGoOn)
lock(lockObj)
Monitor.Pulse(lockObj);
, 작업자 스레드의 끝에 :
lock(lockObj)
Monitor.Pulse(lockObj);
작업자 스레드에서
지금까지 완벽하게 작동했습니다. 그러나 좋은 해결책입니까? 더 좋은가요?
편집 :
Monitor.Enter(lockObj);
workerThread.Start(lockObj);
Monitor.Wait(lockObj);
그리고 노동자 다음과 같습니다 : 내가 메인 스레드에서이 같은 그것을 할 경우 무엇
void Worker(object lockObj)
{
Monitor.Enter(lockObj);
...
...
...
if(mainThreadShouldGoOn)
{
Monitor.Pulse(lockObj);
Monitor.Exit(lockObj);
}
...
...
...
if(!mainThreadShouldGoOn)
{
Monitor.Pulse(lockObj);
Monitor.Exit(lockObj);
}
}
안녕하세요, 자세한 답장을 보내 주셔서 감사합니다. 귀하의 제안에 조금을 기반으로, 나는 내 솔루션을 개정.내 원래 게시물의 편집을 참조하십시오. –