在FileSystemWatcher上更改InternalBufferSize以获取网络路径

时间:2015-10-14 08:04:30

标签: c# filesystemwatcher

我在Windows服务中有一个FileSystemWatcher,我需要使InternalBufferSize更大。我已将其设置为4096的倍数(目前为20 * 4096)。如果我监控本地驱动器,我没有问题,一切正常。

如果我将被监控的目录更改为unc路径,我会得到一个'参数不正确'错误消息,并且观察者不会接收任何更改。

有解决方法吗?

1 个答案:

答案 0 :(得分:1)

根据基础非托管函数ReadDirectoryChangesW的文档:

  

ReadDirectoryChangesWERROR_INVALID_PARAMETER时失败   缓冲区长度大于64 KB,应用程序正在监视   通过网络的目录。这是由于数据包大小限制   使用底层文件共享协议。

您的缓冲区为80 KB并超过此限制。查看最大值(64 KB)是否适用于您的目的。如果没有,你将不得不以其他方式解决它 - 显然增加缓冲区大小。