如何在不消耗大量CPU时间的情况下在线程中读取.ini
文件?该线程将在运行时运行,这意味着没有延迟。
在.ini上搜索值的代码是:
var
Leitura : TIniFile;
begin
Result := False;
Leitura := TIniFile.Create('File.ini');
if Leitura.ValueExists('KEY', ValueToSearch) then Result := True;
Leitura.Free;
但是由于此函数在无限循环中运行,因此消耗了CPU时间,我需要解决此问题。
答案 0 :(得分:9)
您可以使用FindFirstChangeNotification API监视文件中的更改,而不必继续轮询.INI文件中的更改,而仅在文件更改后检查该值。 Earlier Delphi版本在单元TShellChangeNotifier
中包含一个组件ShellCtrls.pas
,它是API函数的包装器。此外,还有一篇文章A Directory Monitor Class For Delphi展示了如何使用ReadDirectoryChangesW Windows API函数。 ReadDirectoryChangesW
“检索描述指定目录中的更改的信息”。 Delphi JCL包含一个组件TJvChangeNotify来监视文件和目录的更改。在Torry上,您最终可以找到一个组件ATFileNotification,该组件可以监视文件/目录的更改并在更改发生时触发事件。