这是场景:

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

guid.dat guid == xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxX

我的应用程序将是一种具有一个文本框的表单,该文本框显示实时添加和删除的所有文件。每次出现新文件时,我都必须使用该文件更新文本框,但我必须首先确保这个半唯一的 GUID 确实是唯一的,如果是,则使用这个新文件更新文本框。

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

问题是我一直在使用 .NET 文件观察器,似乎每次第 (buffersize + 1) 个文件进入时都会有一个内部缓冲区被炸毁。我还尝试在我的应用程序中保留一个内部列表,只添加传入的每个文件,但稍后进行唯一 GUID 检查,但没有骰子。

有帮助吗?

解决方案

我脑子里有几件事:

  • 如果指导是 不是 唯一的,它不会覆盖具有相同名称的文件,或者是基于执行某些外部操作的查找的检查(例如检查存档)?(IE。这是 YAGNI 时刻吗?)
  • 我之前使用过 FileSystemWatcher 并取得了相当好的成功,您能给我们一些想法吗 如何 你实际上在做事吗?
  • 当您在使用自定义列表时说“不骰子”时,问题是什么?如果没有 FileSystemWatcher,您如何检查文件系统更改?!

抱歉,目前还没有答案,只是想了解更多有关该问题的信息:)

其他提示

我建议你看一下 SH变更通知 API调用,可以通知您各种shell事件。要监视文件创建和删除活动,您可能需要特别注意 SHCNE_CREATE 和 SHCNE_DELETE 参数。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top