在不消耗CPU时间的情况下在线程中读取INI文件

时间:2018-10-10 20:06:26

标签: multithreading delphi ini

如何在不消耗大量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时间,我需要解决此问题。

1 个答案:

答案 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,该组件可以监视文件/目录的更改并在更改发生时触发事件。