- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在创建一个使用 FileSystemWatcher 的 Windows 应用程序。 FileSystemWatcher 监视一些目录的变化。每次将某个文件添加到此目录时,FileSystemWatcher 都必须将有关此文件的信息添加到 XML 文件中。一切正常,但是,例如,当我同时添加 100 个文件时(假设某些应用程序将这些文件添加到目录中),并不是每个文件的信息都出现在这个 xml 文件中。
我想使用队列。并使用它向该集合中添加项目。并使用定时器。计时器将从该集合中向 XML 添加信息。这是个好主意吗?
谁能告诉我该怎么做?
所以我认为我必须创建一个 Windows 应用程序和一个 Windows 服务。 WinApp 只会向 EventLog 中添加信息,而 Windows Service 会读取信息 EventLog 并将其写入 XML。我认为这将是最好的方法。我在等待好的建议
最佳答案
正如 Michael Stum 在他的回答中所写,您可以尝试增加缓冲区大小 ( FileSystemWatcher.InternalBufferSize
)。但是请注意,您不应将此值设置为过高的值。另外,恕我直言,这可能只是一个临时修复,看看当您同时向文件夹中添加更多文件时会发生什么。
如果增加缓冲区大小没有帮助,我已经阅读了一些您可以尝试的其他方法:
如果您订阅了 FileSystemWatcher
的通知事件,请尽量让您的事件处理程序尽可能短; IE。确保执行不会停留太久。如果您必须为每个文件通知做大量工作,您可以尝试启动一个单独的线程并在那里进行处理;然后,您的事件处理程序可以非常快速地返回给调用者(并且文件通知会更快地从缓冲区/队列中删除)。
除了某些内容已更改的基本通知外,不要使用 FileSystemWatcher
提供的任何其他信息。一旦收到任何文件更改通知,请等待一小段时间,直到没有更多通知到达(即等待 100 个同时文件更改通知中的最后一个通知)。然后手动列出目录的内容并将所需的信息传输到您的 XML。
这有一个主要缺点:手动检测是否以及哪些文件已被删除、重命名或创建并不容易。您的程序必须保留最后一个目录列表,可以将当前列表与其进行比较以找出更改的内容。
这样做的好处是您可以相当确定不会因为某些 FileSystemWatcher
缓冲区溢出而丢弃任何更改。
关于c# - 用于通知的 FileSystemWatcher,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3792698/
是否可以使用 FileSystemWatcher 查找正在更改文件的 PID 或进程名称? 最佳答案 不,您需要一个文件系统过滤器驱动程序来跟踪具有此类详细信息的更改。 关于filesystemwat
我有一个项目可以监视当前由 Windows Server 计算机托管的网络共享上的文件创建/删除事件,但我正在考虑将文件移动到运行 DataOntap 的 NetApp 机器上。他们的 API 文档说
我正在尝试跟踪文件系统的更改。因此我使用 FileSystemWatcher。不幸的是,Renamed 事件在 Windows 7 和 Windows 8 上不提供 oldName 信息。在 Wind
当我尝试监视网络路径上的文件夹(DFS - 分布式文件系统)时出现异常 System.IO.Internal.BufferOverflowException: To many changes at o
我想问一下是否有可能忽略由自己的进程 FileSystemWatcher 生成的文件系统更改事件正在运行。例如,我自己的进程在监视目录中创建了一个文件,并且FileSystemWatcher 应该认识
我正在使用 FileSystemWatcher 来监控文档扫描到的文件夹。当检测到新文件时,它会发送电子邮件通知某人。它按原样工作,但有时(不是每个文件)它会在新文件上触发 2 或 3 次,并为同一文
FileSystemWatcher 事件可以触发多次。如果我的代码需要可预测的行为,那就不好了。 这在 MSDN documentation 中有描述: Common file system oper
我在 Ubuntu VM 上有一个 dnx 控制台应用程序,它监视与主机操作系统(Windows 8.1)共享的文件夹。当 Ubuntu VM 上的共享文件夹中发生文件更改时,控制台应用程序会响应它们
我需要在我将使用 FileSystemWatcher 的文件夹中记录文件的创建或复制/移动事件。问题是,当我将一个文件粘贴到文件夹中时,FileSystemWatcher 将引发一个 Created
有些东西让我很感兴趣,我没有找到任何资源。 FileSystemWatcher 如何知道计算机“A”上的文件何时创建/删除/更改/重命名? 我认为这适用于轮询(观察者轮询服务器以检查更新),但在使用
我有一个正在监视新文件创建的文件夹。创建文件后,运行的任务可能需要5到30分钟。当最后一个文件仍在处理中时,通常可以创建一个新文件。 从一些测试案例来看,似乎有一些任务队列。有没有办法允许任务同时运行
您好,我正在创建一个 Windows 服务来监视某些目录,以查看目录的大小是否已达到其限制。我创建了一个文件系统观察器,如下所示: FileSystemWatcher watc
我设置了一个 FileSystemWatcher 来检查新文件、将内容存储在数据库中并删除文件。大约10天前,它开始忽略一些文件。我们讨论的是总共 50,000 个文件中的 1,500 个文件。通过手
我在代码中使用 FileSystemWatcher 来跟踪受监视目录下文件的任何更改/重命名/添加。现在,如果受监控的目录本身被删除,我需要一个通知。 关于如何实现这一目标有什么建议吗? 我试图在父目
您好,我正在创建一个 Windows 服务来监视某些目录,以查看目录的大小是否已达到其限制。我创建了一个文件系统观察器,如下所示: FileSystemWatcher watc
我目前正在为 OpenFOAM 输出文件实现文件内容观察器。这些文件由 OpenFOAM 在 Unix 环境中编写,并由我在 Windows 环境中的应用程序使用。 请考虑我的第一个工作收敛文件观察者
我写了下面的代码。 [XmlRoot("myxml")] public class myxml { [XmlElement("one")] public string one { g
我过去使用过 FileSystemWatcher。但是,我希望有人可以解释它在幕后的实际运作方式。 我计划在我正在制作的应用程序中使用它,它将监控大约 5 个驱动器和可能 300,000 个文件。 F
如何用 C# 将文件写入 FileSystemWatcher 监视的文件夹路径? 我的fileSystemWatcher设置如下: public FileSystemWatcher CreateAnd
我有以下代码用于监视文本文件的目录,该目录每天两次获取新文件,该代码在一段时间内工作正常但之后它停止触发 OnCreated 事件... [PermissionSet(SecurityAction.D
我是一名优秀的程序员,十分优秀!