我已经为位于网络存储设备(没有操作系统)上的文件夹实现了 FileSystemWatcher。
场景是,我们有两台机器,分别是机器 A 和机器 B。 我的应用程序在我的表单 Button1 和 Button2 上有两个按钮。我已经编写了重命名 Test.txt 文件的代码。
按钮 1:将文件 Test.txt 重命名为 Test007.txt 并 Button2:将文件Test007.txt重命名为Test.txt
假设我同时从 A 和 B 运行了这个 exe 文件。然后我可以通过从机器 A 按下 Button1 来重命名文件,现在如果我试图从另一台机器 B 重命名文件,则会出现错误
“System.ComponentModel.Win32Exception: 指定的服务器无法执行请求的操作”
任何人对此有任何想法...请帮助我们找到解决方案。我们对该文件夹拥有适当的权限。
注意:代码也适用于 LAN 文件夹,因此代码是完美的。它只是不适用于 NetworkStoreDevice。
最佳答案
我们为一家公司构建了一个产品,其中运行在服务器上的 Windows 服务正在监控文件夹,当文件被添加到该文件夹时,文件被读取、处理(在这种情况下,创建条形码布局并打印在条码打印机),然后删除。
在我们遇到一个客户时,一切都非常适合许多客户,并且性能非常好。当同时将许多文件添加到文件夹时,问题尤其严重。
问题是我们正在监视的文件夹位于 samba 文件系统的共享中,而 FileSystemWatcher 在 samba 文件系统共享上无法可靠地工作(Google 的“FileSystemwatcher samba”)。既然你在谈论“网络存储设备”,我猜你的意思是它是一个 NAS,而 NAS 经常在引擎盖下使用 Linux/Unix 操作系统并使用 samba 公开共享。
我们的解决方案是向我们的软件添加一项功能,以便可以将其配置为在需要时使用轮询。
关于C# FileSystemWatcher 严重问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3779143/