读书人

FileSystemWatcher的开启与关闭解决方

发布时间: 2013-11-11 14:02:17 作者: rapoo

FileSystemWatcher的开启与关闭
窗体中有ListView、两个按钮、一个fileSystemWatcher
我希望通过按钮一启动监视Listview列出的文件变化,

foreach (ListViewItem i in this.listView.Items)
{
this.fileSystemWatcher = new FileSystemWatcher();
this.fileSystemWatcher.Path = i.SubItems[2].Text;
if (i.Group == G1)
{
this.fileSystemWatcher.Filter = i.SubItems[0].Text;
this.fileSystemWatcher.Changed += new FileSystemEventHandler(watcher_Changed);
}
else
{
this.fileSystemWatcher.Created += new FileSystemEventHandler(watcher_Created);
this.fileSystemWatcher.Deleted += new FileSystemEventHandler(watcher_Deleted);
this.fileSystemWatcher.Renamed += new RenamedEventHandler(watcher_Renamed);
}
this.fileSystemWatcher.EnableRaisingEvents = true;
}
另外希望通过按钮二停止对ListView列出的文件监视。
{
this.fileSystemWatcher.EnableRaisingEvents = false;
}
现在出现的问题是按钮二不能清除之前加载的更新,也不能停止对文件的监视,按钮一点几次之后就会发生多次对同一文件监视事件发生。按钮二里面我的代码应该怎么写呢?,达到效果就是停止并清除所有监视 fileSystemWatcher 动态加载监视项
[解决办法]
你用-=将事件处理函数解除就可以了。
[解决办法]
引用:
Quote: 引用:

按钮二应该仍然使用按钮一里的 fileSystemWatcher ,不要重新 new 啊!
麻烦你可不可以复制我那个改一下?我真不知道怎么写?我把前面那个New去了后会有错误。
List<FileSystemWatcher> all = new List<FileSystemWatcher>();
private void button1_Click(object sender, EventArgs e)
{
foreach (ListViewItem i in this.listView.Items)
{
this.fileSystemWatcher = new FileSystemWatcher();
all.Add(fileSystemWatcher);
this.fileSystemWatcher.Path = i.SubItems[2].Text;
if (i.Group == G1)
{
this.fileSystemWatcher.Filter = i.SubItems[0].Text;
this.fileSystemWatcher.Changed += new FileSystemEventHandler(watcher_Changed);
}
else
{
this.fileSystemWatcher.Created += new FileSystemEventHandler(watcher_Created);
this.fileSystemWatcher.Deleted += new FileSystemEventHandler(watcher_Deleted);
this.fileSystemWatcher.Renamed += new RenamedEventHandler(watcher_Renamed);
}
this.fileSystemWatcher.EnableRaisingEvents = true;
}
}

private void button2_Click(object sender, EventArgs e)
{
foreach (FileSystemWatcher fileSystemWatcher in all)
{
fileSystemWatcher.EnableRaisingEvents = false;
fileSystemWatcher.Dispose();
}
all.Clear();
}

读书人网 >C#

热点推荐