【发布时间】:2016-12-08 09:27:53
【问题描述】:
FileSystemWatcher 无法正常工作。它仅在第一次更改发生时响应。如果我随后更改第二个文件,则不会发生任何事情。
public class ImageViewModel : INotifyPropertyChanged
{
public static ImageViewModel singletonInstance { get; set; }
FileSystemWatcher watcher;
private readonly BackgroundWorker worker1;
public ImageViewModel()
{
...
watcher = new FileSystemWatcher(RootPath);
watcher.EnableRaisingEvents = true;
watcher.IncludeSubdirectories = true;
watcher.Changed += new FileSystemEventHandler(watcher_Changed);
this.worker1 = new BackgroundWorker();
this.worker1.DoWork += this.DoWork1;
this.worker1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker1_Completed);
}
...
private void watcher_Changed(object sender, FileSystemEventArgs e)
{
editedFile = e.FullPath;
if (worker.IsBusy == true || worker1.IsBusy == true)
{
autoEvent.WaitOne();
}
else
{
this.worker1.RunWorkerAsync();
}
}
}
你能帮我解决这个问题吗?
【问题讨论】:
-
你的 watcher 只工作一次似乎很奇怪。你确定你没有在 watcher_changed 中禁用它吗?
-
错误是什么? 无法正常工作并没有真正帮助我们。
-
BackgroundWorker 与此有什么关系?为什么
watcher字段不是private readonly,比如worker1?你在watcher_Changed做什么?请提供minimal, complete, and verifiable example。 -
不能正常工作 -> watcher 只能工作一次!
-
可以发
DoWork1的代码吗?
标签: c# wpf mvvm filesystemwatcher