【发布时间】:2010-12-16 14:51:32
【问题描述】:
我一直在寻找一种方法来监视 Delphi 中的特定注册表更改。在 about.com 找到solution:
procedure TRegMonitorThread.Execute;
begin
InitThread; // method omitted here
while not Terminated do
begin
if WaitForSingleObject(FEvent, INFINITE) = WAIT_OBJECT_0 then
begin
fChangeData.RootKey := RootKey;
fChangeData.Key := Key;
SendMessage(Wnd, WM_REGCHANGE, RootKey, LongInt(PChar(Key)));
ResetEvent(FEvent);
RegNotifyChangeKeyValue(FReg.CurrentKey, 1, Filter, FEvent, 1);
end;
end;
end;
在我的应用程序中,我需要按需启动和停止该线程,但上面的代码不允许这样做。仅仅设置 Terminated 标志是不行的。
以某种方式告诉线程停止等待,然后释放它并在需要时创建一个新线程就足够了。如何更改此代码以实现此目的?
【问题讨论】:
标签: multithreading delphi ondemand