폼 기반 응용 프로그램이 있습니다. UI는 스레드에 의해 처리됩니다. UI 스레드에서 3 개의 스레드를 만들어 일부 처리를 수행합니다.C에서 스레드 동기화
Thread t1 = new Thread(() => performprocessing());
Thread t2 = new Thread(() => performprocessing());
Thread t3 = new Thread(() => performprocessing());
지금, 나는 모든 3 개 스레드가 자신의 execution.So를 완료 한 후에는 UI 스레드에서 문을 실행하려면, 나는 다음과 같은 한 :
do
{
} while (t1.IsAlive || t2.IsAlive || t3.IsAlive);
/*--execute statement---*/
하지만 난 UI가 반응을 유지하려면 게다가. 이 경우 UI 스레드는 모든 세 스레드가 실행을 완료 할 때까지 루프에 고정됩니다. 어떻게해야합니까?
수동 및 자동 재설정 이벤트에 대해 읽었지만 이러한 경우 사용 방법을 잘 모르겠습니다. 친절하게 안내해드립니다.
사용하지 마십시오. 귀하의'if (workerCompleted == 3)'은 스레드로부터 안전하지 않습니다. 일이 일어날 가능성이있을 수 있습니다. OP는 스레드가 사용되는 방식에 대한 컨텍스트를 제공하지 않았으며 UI 스레드와 별도의 작업자 스레드가 3 개만 있다는 점을 기억하십시오. –
스레딩 문제를 제거하고 더 일반화되도록 업데이트되었습니다. @ dan-pantry – Marko