处理文件系统更改的最佳架构?

时间:2008-08-26 19:42:47

标签: .net architecture concurrency filesystemwatcher

以下是该方案:

我正在编写一个应用程序,它会监视特定目录中的任何更改。这个目录将充斥着每分钟数千个文件,每个文件具有“几乎”唯一的GUID。文件格式为:

GUID.dat,其中GUID == xxxxxxxxxxxxxxxxxxxxxxxxxxxxx (内部内容不相关,但只是文本数据)

我的应用将是一个包含一个文本框的表单,该文本框显示实时添加和删除的所有文件。每次有新文件进来时我都要用这个文件更新文本框,但我必须首先确保这个半唯一的GUID真的是唯一的,如果是,用这个新文件更新文本框。

从该目录中删除文件时,请确保该文件存在,然后将其删除,相应地更新文本框。

问题是我一直在使用.NET filewatcher,似乎有一个内部缓冲区在每次(buffersize + 1)文件进来时都会被炸毁。我还试图保持内部在我的应用程序中列出,只需添加进来的每个文件,但稍后进行unique-GUID检查,但不要骰子。

2 个答案:

答案 0 :(得分:3)

我脑子里有几件事情:

  • 如果guid 唯一,它是否会覆盖具有相同名称的文件,还是基于查找执行某些外部操作(例如检查存档)的检查? (即这是一个YAGNI时刻吗?)
  • 之前我使用过FileSystemWatcher取得了相当不错的成功,你能否就 你的实际行为提出一些想法?
  • 使用自定义列表时,如果说“没有骰子”,问题是什么?如果没有FileSystemWatcher,你是如何检查文件系统更改的?!

抱歉还没有回答,只是想了解更多关于这个问题:)

答案 1 :(得分:2)

我建议您查看SHChangeNotify API调用,该调用可以通知您所有类型的shell事件。要监视文件创建和删除活动,您可能需要特别注意SHCNE_CREATE和SHCNE_DELETE参数。