C# 无法在C中使用FileSystemWatcher监视文件夹#

C# 无法在C中使用FileSystemWatcher监视文件夹#,c#,filesystemwatcher,.net,C#,Filesystemwatcher,.net,我正在尝试监视文件夹(及其子文件夹)的更改。但是,我的处理程序事件从未执行。我正在使用以下代码: FileSystemWatcher m_Watcher = new FileSystemWatcher(); m_Watcher.Path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "/Portal 2 Map Installer/"; m_Watcher.Filter = ""; m_Watcher.

我正在尝试监视文件夹(及其子文件夹)的更改。但是,我的处理程序事件从未执行。我正在使用以下代码:

FileSystemWatcher m_Watcher = new FileSystemWatcher();
m_Watcher.Path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "/Portal 2 Map Installer/"; 
m_Watcher.Filter = "";
m_Watcher.NotifyFilter = NotifyFilters.LastAccess |
             NotifyFilters.LastWrite |
             NotifyFilters.FileName |
             NotifyFilters.DirectoryName;
m_Watcher.IncludeSubdirectories = true;
m_Watcher.Changed += new FileSystemEventHandler(OnFolderChange);
m_Watcher.EnableRaisingEvents = true;

救命啊

为on error事件创建一个处理程序,并查看它的说明:

  m_Watcher.Error += new ErrorEventHandler(OnError);

关于事件处理程序,有一些注释:

重命名文件时会意外引发Changed事件,但重命名目录时不会引发Changed事件。要监视重命名,请使用事件


因此,谨慎地处理事件(至少是这样)。

我认为代码是正确的。问题一定在别处。你想看什么类型的文件系统?例如,FAT32分区就不适用于此。我想我已经解决了!出于某种原因,我的Form1_加载事件没有触发,这是我进行所有初始化的地方。现在来找出原因。好了,开始工作了!现在有人知道如何阻止事件被触发三次了吗?我触发了创建的事件,然后又触发了两个更改的事件。@Yoshie:您应该在构造函数中设置如下属性:
public Form1()
,而不是在
Load
事件处理程序方法中。您无法停止多次触发事件,因此必须解决这个问题。请参阅以获取一些建议。错误3属性或索引器“Portal_2_Level_Installer.Form1.OnError”不能在此上下文中使用,因为它缺少get-accessorError 4的Portal_2_Level_Installer.Form1.OnError”是一个“属性”,但像“方法”一样使用@YoshieMaster:您需要首先定义OnError处理程序。文件夹或其内容将被删除永远不要被抹去。文件被放置到文件夹中,执行操作,然后删除。