2010-02-04 320 views
4

由于某些原因,我无法从FileSystemWatcher中删除事件处理程序。FileSystemWatcher删除事件处理程序

这是我

void Start() 
{ 
    ivFileSystemWatcher = new FileSystemWatcher(); 
    ivFileSystemWatcher.Changed += 
     new FileSystemEventHandler(ivFileSystemWatcher_Changed); 
} 

void Stop() 
{ 
    ivFileSystemWatcher.Changed -= 
     new FileSystemEventHandler(ivFileSystemWatcher_Changed); 
    ivFileSystemWatcher.Dispose(); 
} 

当我喊开始我开始接收变化事件,但是当我打电话停止我期待的事件停止,但他们仍然被提出。

回答

6

你有没有尝试设置EnableRaisingEventsfalse

void Stop() 
{ 
    ivFileSystemWatcher.EnableRaisingEvents = false; 

    ivFileSystemWatcher.Changed -= 
     new FileSystemEventHandler(ivFileSystemWatcher_Changed); 
    ivFileSystemWatcher.Dispose(); 
} 

没有看到你的代码的其余部分,我不相信这是为Dispose()最好的地方......

+0

我添加了“ EnableRaisingEvents = false“事件仍在发生。通过使用标志来忽略事件是有办法的,但是我最担心的是如果事件没有被清理,并且随着时间的推移,这可能是不好的。 – 2010-02-04 15:08:34

+0

没关系我是一个白痴 - 我从来没有称过“停止”。 现在一切正常。 – 2010-02-04 15:27:33