Delphi XE2 文档对 TEvent 进行了说明:
有时,您需要等待线程完成某些操作,而不是等待特定线程完成执行。为此,请使用事件对象。事件对象 (System.SyncObjs.TEvent) 应该在全局范围内创建,以便它们可以像信号一样对所有线程可见。
当一个线程完成其他线程所依赖的操作时,它会调用 TEvent.SetEvent。SetEvent 打开信号,因此任何其他检查的线程都将知道操作已完成。要关闭信号,请使用 ResetEvent 方法。
例如,考虑一种情况,您必须等待多个线程而不是单个线程完成它们的执行。因为您不知道哪个线程将最后完成,所以您不能简单地使用其中一个线程的 WaitFor 方法。相反,您可以让每个线程在完成时增加一个计数器,并让最后一个线程通过设置事件发出信号表明它们都已完成。
但是,Delphi 文档没有解释另一个线程如何检测到调用了 TEvent.Set 事件。您能否解释一下如何检查是否调用了 TEvent.Set ?