C# FileSystemWatcher 严重问题?

标签 c# file filesystems

我已经为位于网络存储设备(没有操作系统)上的文件夹实现了 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/

相关文章:

android - WebView Android 4.0 文件上传

c - 如何获取文件中当前单词前后的单词?

java - 正则表达式替换java中轮询路径中的文件夹名称

meteor - 如何使用 FileSystem 和 CollectionFS 将文件保存在文件夹中? (是的,真的。)

Linux 文件系统嵌套和系统调用 Hook

c# - X509Certificate2.FriendlyName 属性无法检索 Linux 上的证书标签

c# - ASP .NET CORE 找不到包含自定义程序集的文件或程序集

ios - iOS 虚拟文件系统

c# - 对于中等复杂度的 Web 应用程序,最好的技术是什么?

c# - 如何以给定的机会在给定的边界内获得等于给定数字的随机整数?