2010-02-04 8 views
4

Pour une raison quelconque, je ne peux pas supprimer un gestionnaire d'événements de FileSystemWatcher.FileSystemWatcher remove Gestionnaire d'événements

C'est ce que je

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

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

Quand je commence appelle avoir commencé à recevoir les événements de changement, mais quand je l'appelle arrêt, je me attends les événements d'arrêter, mais ils sont en train de monter.

Répondre

6

Avez-vous essayé d'installer EnableRaisingEvents à false:

void Stop() 
{ 
    ivFileSystemWatcher.EnableRaisingEvents = false; 

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

Sans voir le reste de votre code, je ne suis pas convaincu que est le meilleur endroit pour le Dispose() ...

+0

J'ai ajouté dans le " EnableRaisingEvents = false "l'événement est toujours levé. Il y a des façons de contourner cela en utilisant un drapeau pour ignorer l'événement, mais ma grande préoccupation est que si les événements ne sont pas nettoyés et au fil du temps, cela pourrait être mauvais. –

+0

Peu importe que j'étais un idiot - je n'ai jamais appelé "Stop". Tout fonctionne bien maintenant. –