2010-02-04 322 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