我有一个Windows服务,可以监视PC上的路径。我的挑战是我遇到了服务问题,不得不停止并修复它。现在,在监视路径的子目录中有新文件,由于该服务未运行,因此无法处理。我希望能够从路径中剪切出该文件夹并将其粘贴,然后我的服务应会检测到该文件夹,并且此部分可以正常工作,但无法继续并读取该文件夹中的文件。
下面是文件监视程序的设置方式
fileSystemWatcher1.Path = filePath;
fileSystemWatcher1.EnableRaisingEvents = true;
fileSystemWatcher1.IncludeSubdirectories = true;
fileSystemWatcher1.InternalBufferSize = fsWatcherBuffer;
fileSystemWatcher1.Created += new
FileSystemEventHandler(fileSystemWatcher1_Created);
fileSystemWatcher1.Changed += new
FileSystemEventHandler(fileSystemWatcher1_Changed);
答案 0 :(得分:0)
我在Windows 10操作系统上进行了一些实验,似乎移动子文件夹只会为移动的目录引发一个Created
事件,但是复制粘贴子文件夹会引发Created
和{{1 }}子文件夹及其内容的全部事件(深度)。
我的观察结果与documentation不符:
操作系统和FileSystemWatcher对象将剪切和粘贴操作或移动操作解释为文件夹及其内容的重命名操作。如果将包含文件的文件夹剪切并粘贴到正在监视的文件夹中,则FileSystemWatcher对象仅将文件夹报告为新文件夹,而不报告其内容,因为它们实际上仅被重命名。
要通知文件夹内容已移动或复制到监视的文件夹中,请提供OnChanged和OnRenamed事件处理程序方法
也来自here:
如果在您正在监视的目录的子树中创建了一个目录,并且IncludeSubdirectories为true,则将自动监视该目录。