首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有关于使用TTimer来监控文件日期和更新屏幕的建议?

有没有关于使用TTimer来监控文件日期和更新屏幕的建议?
EN

Stack Overflow用户
提问于 2010-03-06 10:47:43
回答 4查看 642关注 0票数 3

我想要检测文件日期何时发生变化,并更新用作that源的DevX TdxMemData,然后在使用它的TDBGrid中看到它。

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

我正在考虑使用TTimer,并每隔5秒启动一次。(这对我来说已经足够准确了。)

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

在Timer事件中调用FileAge和更新DevEx TdxMemData对象时有什么需要注意的地方吗?我的主应用程序会看到这些更新吗?

当计时器事件得到控制时,有没有办法检测我的程序的“状态”,这样我就可以避免出现问题?

或者我打开了一个巨大的蠕虫罐头,考虑使用TTimer来完成这个任务?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-03-06 16:43:41

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

about.com中有一些关于这个问题的讨论和解决方案

票数 5
EN

Stack Overflow用户

发布于 2010-03-06 11:54:46

TTimer事件是在主应用程序线程中调用的,因此从它们访问VCL对象不会有任何问题。它在您的应用程序空闲时调用,因此除非您手动调用Application.ProcessMessages,否则它不会在您处于OnClick处理程序或类似处理程序中时发生。

不过,我还是建议使用ReadDirectoryChangesW。如果您使用计时器,即使应用程序空闲并且文件没有变化,您也会继续轮询。它将使您的CPU不会空闲,并且可以防止硬盘驱动器停止旋转,这可能会对节能和电池使用产生负面影响。

票数 8
EN

Stack Overflow用户

发布于 2010-03-06 13:31:53

Windows允许您监视文件更改。作为快速入门,请参阅http://delphi.about.com/od/kbwinshell/l/aa030403a.htm。也有几个现成的组件可用。谷歌搜索"delphi monitor file change“或类似的东西

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2391163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档