代码之家  ›  专栏  ›  技术社区  ›  RobertFrank Picarus

有没有关于使用ttimer监视文件日期和更新屏幕的消息?

  •  3
  • RobertFrank Picarus  · 技术社区  · 16 年前

    我想检测文件日期何时更改,并更新一个用作tdatasource的devx tdxmemdata,然后在使用它的tdbgrid中可以看到它。

    我发现了一些使用readdirectorychangesw的代码,但对于我的简单需求来说,这些代码似乎相当复杂。

    我在考虑用一个小定时器,每五秒钟就把它关掉。(这对我来说足够精确了。)

    做这件事有什么需要注意的吗?我读到线程对VCL访问有各种限制,等等。同样的事情适用于TTimer事件吗?

    在计时器事件中调用fileage和更新devex tdxmemdata对象时,需要注意什么吗?我的主应用程序会看到这些更新吗?

    有没有办法在计时器事件得到控制时检测程序的“状态”以便避免出现问题?

    或者我是在开一个巨大的虫子罐头考虑用一个小东西来做这个?

    4 回复  |  直到 16 年前
        1
  •  5
  •   Harriv    16 年前

    在demos目录中有一个“shellchangeinnotifier”组件,当文件在目录中被修改、添加或删除时,它将触发事件。但是它只有一个onchange事件,所以你不知道到底发生了什么。

    关于这个问题有一些讨论和解决办法 about.com

        2
  •  8
  •   Zoë Peterson RRUZ    16 年前

    ttimer事件是在主应用程序线程中调用的,因此从它们访问vcl对象没有问题。它是在应用程序空闲时调用的,因此除非您手动调用application.processMessages,否则它不会在您的onclick处理程序或类似处理程序中发生。

    不过,我建议使用readdirectorychangesw。如果使用计时器,即使应用程序空闲且文件未更改,也将继续轮询。它可以让你的CPU不至于闲置,也可以让硬盘不至于转个不停,这会对省电和电池使用产生负面影响。

        3
  •  4
  •   Joe Meyer    16 年前

    windows允许您监视文件更改。作为一个跳跃式的开始 http://delphi.about.com/od/kbwinshell/l/aa030403a.htm . 也有一些现成的组件可用。谷歌搜索“delphi监控文件更改”或类似的东西

        4
  •  1
  •   Runner    16 年前

    您可以查看我的: DirectoryWatch

    它是“readdirectorychangesw”函数的包装。它比“ShellChangeNotifier”更具体。