0

我正在寻找一些建议和帮助。在 ASP.NET C# 中的 Windows 服务器上:

  • 我有 10 个文件夹(带有子文件夹和文件)在数据库中关联到 10 个用户(列:foldername、、user)。
  • 我修改了文件夹的内容,然后按下按钮,文件夹已更改的用户会收到一封警报邮件。

我想使用FileSystemWatcher,但是每次更改都会自动触发(我错了?),我不需要它。

我认为创建每个文件夹的“印记”并将其存储在数据库中为每个用户(列:、、、、)foldernameuser简单。当我按下按钮时,如果新的印记与以前的印记不同,系统将向用户发送一封电子邮件(然后将新的印记存储在数据库中)。imprintimprint_date

您如何看待这个解决方案?有人可以向我建议如何创建印记吗?

4

1 回答 1

0

您可以遍历将目录和文件保存到名称+上次修改日期的文件中,并将其保存为字符串。

每当您想检查时,请比较字符串。

您也可以简单地对它们进行哈希处理并查看哈希是否已更改(这不是 100% 准确,因为在某些最终情况下您可能会错过通知),但对于您似乎需要的东西来说应该绰绰有余......

编辑:
至于您的评论,我不知道没有实现,但写起来应该不难。

我给你的问题一点点......你实际上可以使用FileSystemWatcher, 但有一个转折......让一个类创建 10 个观察者,并添加他们的事件处理程序,以便他们监控每个文件夹。
当更改触发时,在该类中,将该用户的 bool 标志设置为 true(ChangesMade例如调用它),并取消注册FileSystemWatcher. 当完成更多更改时,您不会再触发任何事件。

当您点击发送电子邮件按钮时,只需向其ChangesMade属性设置为 true的任何人发送电子邮件,FileSystemWatcher然后为这些文件夹再次注册这些电子邮件。

于 2013-11-12T13:49:27.290 回答