2016-03-05 52 views
0

我需要在创建特定文件时触发事件。但是,此文件是在Temp文件夹中创建的目录中创建的。所以我将不得不设置整个Temp目录与所有子目录的监视,并且我关心性能影响。FileSystemWatcher性能

我知道文件的确切名称和路径,只需要跟踪它的创建。轮询File.Exists每秒一次还是设置FileSystemWatcher更好?也许有一种方法可以禁用除文件创建之外的所有事件的监视,也许它会比轮询更快?

我无法真正地测试它,因为Temp目录的使用模式是相当不可预测的。

+0

'我无法真正测试它,因为Temp目录的使用模式是相当不可预测的.'如果这是真的,那么不能使用多个任务/线程的代码进行测试.... – Eser

回答

1

我不明白。为什么你必须设置“观看”整个临时目录?而不只是该文件所在的文件夹?

我知道确切名称和文件的路径谷歌

BIT:Use FileSystemWatcher on a single file in C#

这将会比轮询可能是更好的性能每段时间ammount的。

但仍然,我已阅读,甚至发生在我身上,FSW不是100%可靠。

所以,我觉得两种方法:

1)不要FSW,投票和用户干预的混合(即刷新按钮)

2)获取一些细微的药物和阅读:https://msdn.microsoft.com/en-us/library/windows/hardware/ff540402%28v=vs.85%29.aspx

+0

因为它的路径不存在程序启动时。在某个时候Temp内的一个目录将被创建。过了一段时间后,里面还有一个目标。然后在一段时间后会出现目标文件。 – Poma

+0

如果你知道什么时候会出现,那么你可以做#1,即使知道FSW不是很可靠。 –