文件夹更改后发送电子邮件

时间:2013-11-12 13:12:49

标签: c# asp.net filesystems directory

我正在寻求一些建议和帮助。在ASP.NET C#中的Windows Server上:

  • 我有10个文件夹(包含子文件夹和文件)在数据库中与10个用户相关联(列foldernameuser)。
  • 我修改了文件夹的内容,然后按下一个按钮,对于已更改文件夹的用户,会收到一条警报邮件。

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

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

您对此解决方案有何看法?有人可以告诉我如何创建印记吗?

1 个答案:

答案 0 :(得分:0)

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

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

你也可以简单地哈希它们,看看哈希是否已经改变(这不是100%准确,因为在某些情况下你可能会错过通知),但是应该比你看起来需要的更好。 。

修改
至于你的评论,我没有意识到任何实现,但写起来应该不难。

我稍微提出了你的问题......你实际上可以使用FileSystemWatcher,但是有一个转折......让一个类创建10个观察者,并添加他们的事件处理程序,以便他们监视每个文件夹。登记/> 触发更改时,在该类中,将该用户的bool标志设置为true(例如,将其称为ChangesMade),然后取消注册FileSystemWatcher。完成更多更改后,您不会再触发任何事件。

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