我在Windows服务中有一个FileSystemWatcher,我需要使InternalBufferSize更大。我已将其设置为4096的倍数(目前为20 * 4096)。如果我监控本地驱动器,我没有问题,一切正常。
如果我将被监控的目录更改为unc路径,我会得到一个'参数不正确'错误消息,并且观察者不会接收任何更改。
有解决方法吗?
答案 0 :(得分:1)
根据基础非托管函数ReadDirectoryChangesW
的文档:
ReadDirectoryChangesW
在ERROR_INVALID_PARAMETER
时失败 缓冲区长度大于64 KB,应用程序正在监视 通过网络的目录。这是由于数据包大小限制 使用底层文件共享协议。
您的缓冲区为80 KB并超过此限制。查看最大值(64 KB)是否适用于您的目的。如果没有,你将不得不以其他方式解决它 - 显然增加缓冲区大小。