我正在寻求一些建议和帮助。在ASP.NET C#中的Windows Server上:
foldername
,user
)。我想使用FileSystemWatcher
,但每次更改都会自动触发(我错了?),我不需要它。
我认为创建每个文件夹的“印记”并将其存储在每个用户的数据库中更为简单(列foldername
,user
,imprint
,{{ 1}})。当我按下按钮时,如果新的印记与以前的印记不同,系统将向用户发送一封电子邮件(然后将新的印记存储在数据库中)。
您对此解决方案有何看法?有人可以告诉我如何创建印记吗?
答案 0 :(得分:0)
您可以遍历目录和文件,将名称+上次修改日期保存到文件中,并将其另存为字符串。
每当你想检查时,比较字符串。
你也可以简单地哈希它们,看看哈希是否已经改变(这不是100%准确,因为在某些情况下你可能会错过通知),但是应该比你看起来需要的更好。 。
修改强>
至于你的评论,我没有意识到任何实现,但写起来应该不难。
我稍微提出了你的问题......你实际上可以使用FileSystemWatcher
,但是有一个转折......让一个类创建10个观察者,并添加他们的事件处理程序,以便他们监视每个文件夹。登记/>
触发更改时,在该类中,将该用户的bool标志设置为true(例如,将其称为ChangesMade
),然后取消注册FileSystemWatcher
。完成更多更改后,您不会再触发任何事件。
当您点击发送电子邮件按钮时,只需向其ChangesMade
属性设置为true的任何人发送电子邮件,然后再为这些文件夹注册FileSystemWatcher
。