德爾福XE2文件說,這大約TEvent:您如何檢測到TEvent已設置?
有時候,你需要等待線程完成一些操作,而不是等待特定線程來完成執行。爲此,請使用事件對象。應該使用全局作用域創建事件對象(System.SyncObjs.TEvent),以便它們可以像所有線程都可見的信號那樣工作。
當線程完成其他線程所依賴的操作時,它會調用TEvent.SetEvent。 SetEvent打開信號,所以其他任何檢查線程都會知道操作已完成。要關閉信號,請使用ResetEvent方法。
例如,考慮一種情況,您必須等待幾個線程才能完成其執行,而不是單個線程。因爲你不知道最後哪個線程會完成,所以你不能簡單地使用其中一個線程的WaitFor方法。相反,你可以讓每個線程在完成時增加一個計數器,並且通過設置一個事件來獲得最後的線程信號。
但是,Delphi文檔沒有解釋另一個線程如何檢測到TEvent.Set事件被調用。你能否介紹一下如何檢查TEvent.Set是否被調用?
爲什麼你不等待所有的線程/事件發出信號?爲什麼要測試而不是等待? –
謝謝您的評論。爲了迴應我在這裏收到的幫助,我實際上已經編寫了代碼以等待事件發出信號。 –