델파이 XE2 문서는 TEvent에 대해이 말한다 :TEvent가 설정되었음을 어떻게 감지합니까?
때때로, 당신은 스레드가 오히려 실행을 완료하기 위해 특정 스레드를 기다리는 것보다 몇 가지 작업을 완료 할 때까지 기다릴 필요가있다. 이렇게하려면 이벤트 객체를 사용하십시오. 이벤트 개체 (System.SyncObjs.TEvent)는 모든 스레드에서 볼 수있는 신호처럼 작동 할 수 있도록 전역 범위로 만들어야합니다.
스레드가 다른 스레드가 의존하는 작업을 완료하면 TEvent.SetEvent를 호출합니다. SetEvent는 신호를 켜기 때문에 검사를 수행하는 다른 스레드는 작업이 완료되었음을 알 수 있습니다. 신호를 끄려면 ResetEvent 메서드를 사용합니다.
예를 들어, 단일 스레드가 아닌 실행을 완료하기 위해 여러 스레드를 기다려야하는 상황을 고려해보십시오. 마지막으로 끝나는 스레드를 알지 못하기 때문에 스레드 중 하나의 WaitFor 메서드를 사용할 수 없습니다. 대신 각 스레드가 완료 될 때 카운터를 증가시키고 이벤트를 설정하여 마지막 스레드 신호를 모두 보냈 음을 알릴 수 있습니다.
그러나 다른 스레드가 TEvent.Set 이벤트가 호출되었음을 감지하는 방법은 Delphi 설명서에서 설명하지 않습니다. TEvent.Set이 호출되었는지 확인하는 방법을 설명해 주시겠습니까?
왜 모든 스레드/이벤트가 신호를 받길 기다리지 마십시오. 왜 기다리는 것이 아니라 테스트할까요? –
의견을 보내 주셔서 감사합니다. 여기서받은 도움에 대한 응답으로 이벤트 사실을 알리기 위해 코드를 프로그래밍했습니다. –