FileSystemWatcher如何在另一个计算机目录上工作?

时间:2009-03-09 16:51:13

标签: .net winapi design-patterns filesystemwatcher

有些东西引起了我的注意,我找不到任何资源。

FileSystemWatcher如何知道创建/删除/更改/重命名计算机“A”上的文件的时间?

我认为这适用于轮询,(观察者轮询服务器以检查更新),但在使用Wireshark验证网络活动后,我看到没有使用轮询。 SMB协议是否使用可观察/观察者模式?

在这种情况下,服务器如何知道客户端何时不再观察他?

在观察期间网络下降并在之后立即返回时会产生什么后果?

在另一台计算机上使用FileSystemWatcher似乎太容易了......

2 个答案:

答案 0 :(得分:8)

  

在另一个上使用FileSystemWatcher   电脑似乎太容易成为现实......

有点儿。底层API - ReadDirectoryChanges() - 打开与服务器的连接,服务器负责响应更改时的响应。如果由于某种原因导致该连接中断,或者您遇到了正在连接的操作系统的连接限制,那么您将不会收到通知。

我发现定期轮询(有一些相当长的间隔)更可靠,并且仅使用FileSystemWatcher作为快速响应民意调查之间变化的方式。

答案 1 :(得分:0)

我认为FileSystemWatcher确实使用基于底层Win32 API的观察者/可观察模式。不确定实际事件,但可能是在初始化FileSystemWatcher对象以观察网络路径并设置EnableRaisingEvents属性时,它通过附加到Win32 API引发的事件将它自己作为观察者附加到文件夹中该文件夹位于同一台计算机上。

在观察者设计模式中,主体(可观察的)从不知道观察者的数量或类型,因此关于另一台计算机知道FSW何时不再观看的观点是无关紧要的。

如果网络在发生的事件中掉线有点困难 - 别人将不得不帮助你。