好吧,所以我從How to check if a open file has been updated瞭解到我應該使用FileSystemWatcher來監視文件的更改。那麼現在,問題是如果我必須跟蹤許多文件,我是否爲每個文件創建1個觀察器?另外,一旦文件關閉,我必須以某種方式處置觀察者。有一個Dictionary<string, FileSystemWatcher>
存儲文件路徑和FileSystemWatcher
的路要走嗎?當我打開更多文件時,我添加了更多的觀察者,並在我關閉時適當地處理觀察者。會有太多的觀察者是壞事嗎?C#:使用FileSystemWatcher監視文件更改
UPDATE
我只是做了
protected void AttachFileMonitor(EditorTabViewModel tab)
{
string file = tab.FilePath;
if (!_fsWatchers.ContainsKey(file))
{
var watcher = new FileSystemWatcher();
watcher.Path = Path.GetDirectoryName(file);
watcher.Filter = Path.GetFileName(file);
watcher.Changed += (s, e) =>
{
string message = "";
string caption = "";
MessageBoxButton buttons = MessageBoxButton.YesNo;
MessageBoxImage image = MessageBoxImage.Question;
MessageBoxResult defaultResult = MessageBoxResult.Yes;
MessageBoxResult result = _dialogSvc.GetMessageBox(message, caption, buttons, image, defaultResult);
if (result == MessageBoxResult.Yes)
{
tab.Open(file);
}
};
_fsWatchers.Add(file, watcher);
}
}
protected void DetachFileMonitor(EditorTabViewModel tab)
{
if (_fsWatchers.ContainsKey(tab.FilePath)) {
_fsWatchers.Remove(tab.FilePath);
}
}
我發現Changed()
從未被觸發...
將EnableRaisingEvents設置爲true :) – Onkelborg 2010-10-19 14:09:02