2012-08-25 33 views
1

我有一个使用FileSystemWatcher监视文件更改的Windows应用程序。可以添加多个文件位置,并为每个位置创建FileSystemWatcher的新实例,并将位置添加到列表框中。有一个选项可以从列表框中删除一个位置。当某个位置被删除时,我需要删除/处理特定的FileSystemWatcher实例。有什么办法可以达到这个目的吗?提前致谢。如何删除FileSystemWatcher对象的特定实例

FileSystemWatcher fsw; 

    private void CreateFWInstance(string strLoc) 
    { 
     if (strLoc != string.Empty) 
     { 
      fsw = new FileSystemWatcher(); 
      fsw.Changed += new FileSystemEventHandler(OnChanged); 

      fsw.Path = strLoc; 
      fsw.SynchronizingObject = this; 

      fsw.EnableRaisingEvents = true; 

     } 
    } 

回答

6

那么你需要保持对实例的引用,例如,作为列表框条目中的,或者可能是从路径映射到观察者的Dictionary<string, FileSystemWatcher>。然后处置观察者并将其从字典中移除/删除列表项。

+0

我该如何处置对象实例?我尝试从字典中删除该项目,但位置仍在观看。 – TechDo

+0

呼叫处置 - 就这么简单! (设置EnableRaisingEvents应该也可以,但是你应该放弃它。) –

+0

好吧...会尝试一下。 – TechDo