我一直在寻找一种方法来监视 Delphi 中的特定注册表更改。在 about.com 上找到了解决方案:
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 标志是行不通的。
以某种方式告诉线程停止等待,然后释放它并在需要时创建一个新线程就足够了。如何更改此代码以实现此目的?