如何在Windows应用程序的后台监控文件夹的变化?

6
我正在编写一个Windows 8应用程序,主要在后台运行。该应用程序将专门针对计算机(即不包括平板电脑或手机,如果这有所区别)。它需要能够在后台运行时监视指定的文件夹,并在该文件夹发生更改时得到通知。由于它是Windows Store应用程序,因此我不能使用FileSystemWatcher,尽管它非常适合我的情况。此外,我也不能使用计时器来监视该文件夹,因为这些更改会每10-15秒发生一次,而计时器不支持小于15分钟的时间间隔。那么我还有哪些选项呢?

@JABFreeware,那我需要编写另一个程序来监视文件夹,将其打包成可执行文件,将可执行文件添加到我的应用程序中,让我的应用程序运行它,然后告诉我的应用程序从可执行文件那里监听消息? - Garrett
2
一个解决方案是不要将您的应用程序放在故意阻止您做想做的事情的商店中。 - Matti Virkkunen
@Garrett,恰好回答了Garrett发布的问题! - FrostyFire
@MattiVirkkunen 我必须说,我绝对鄙视Windows,主要是因为这样愚蠢的事情,但是我目前没有其他方法来分发此应用程序,我需要将其发布出去。 - Garrett
@JABFreeware 嗯,我不太确定如何做这些事情,但如果我能让它工作,那么这是一个选择。然而,这远非理想。 - Garrett
显示剩余5条评论
2个回答

1

由于您无法使用每15秒触发一次的计时器,我唯一能推荐的是运行一个简单的循环,在循环之前检查系统时钟的系统时间,然后在每个循环中检查当前系统时钟和最初存储值之间的差异。当达到15秒时,循环停止并启动检查文件夹的代码。如果循环中的代码简单并使用了Sleep调用,则几乎不会占用任何系统资源。

希望这可以帮助您!


忙等待?至少建议在循环中放置某种“Sleep”调用,如果允许的话...否则会破坏CPU,并使电池电量下降!一个空循环并使用“几乎没有系统资源”。它会使处理器(或至少一个核心)持续以100%的容量运行。 - Matti Virkkunen
@MattiVirkkunen 我相信他认为我会放置一个Sleep等效的代码。否则,我知道它会占用CPU资源。 - Garrett
@MattiVirkkunen 是的,我确实做出了这样的假设。我会编辑我的答案以澄清。 - FrostyFire
@JABFreeware,请不要认为我忘记了你的答案,我只是在尝试让它正常工作时遇到了困难。 - Garrett
@JABFreeware 一切似乎都正常工作,我只需要一种立即启动任务的方法。 - Garrett
不要忘记在单独的线程中运行它,并且在关闭应用程序时终止循环。 - Allan Spreys

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接