TMyThread = class(TThread)
private
FMyEvent : TEvent;
// other info
public
property MyEvent: TEvent read FMyEvent;
// other info/methods
end;
procedure TMyThread.Execute;
begin
While Not Terminated Do
Begin
If ( FMyEvent.WaitFor( $FFFFFFFF ) = wrSinaled ) Then // 线程会在这里挂起,不占用资源,直到MyEvent被Set
// do something
Else
Terminate;
End;
End;
MainForm:
...
// Set info
MyThread.MyEvent.Set;
MyThread.MyEvent.Reset;
// 上两句等效于Pulse一下,然后线程就开始一次查询,查完线程就挂住了
end;