Events "löschen"

29/10/2008 - 11:29 von Volker Heil | Report spam
Hi,

ich habe eine Klasse, in der zu verschiedenen Zeiten und von
verschiedenen Programmteilen aus Filesystemwatcher-Events zugefügt
werden können.

...
localeFSW=new FileSystemWatcher(txtNeuerOrdner);
localeFSW.Created += new FileSystemEventHandler(OnChanged);
...

Dabei verwende ich also die localeFSW immer wieder.
Soweit geht es aber prima!

Gibt es eine Möglichkeit diese mit einem Schlag wieder zu entfernen?
Oder wenigstens eine Art Auflistung, welche Ordner gerade überwacht
werden um diese dann einzeln zu entfernen?
Dass ich diese mit [ localeFSW.Created -= ... ] wieder löschen kann
ist mir klar, aber dann müßte ich mir jeweils woanders merken welche
Ordner gerade überwacht werden und das wàre reichlich
Verwaltungsaufwand.

Wie werde ich diese Events also mit einem Schlag wieder los?

Tschüss,

Volker
 

Lesen sie die antworten

#1 walter frank
29/10/2008 - 17:18 | Warnen spam
Hallo Volker,

mach Dir einen eigenen FileSystemWatcher, dann geht es:

public class MyFileSystemWatcher : FileSystemWatcher
{
public new event FileSystemEventHandler Created;

public MyFileSystemWatcher() : base ()
{
registerEventsToBase();
}
public MyFileSystemWatcher (string path) : base (path)
{
registerEventsToBase();
}
public MyFileSystemWatcher(string path, string filter) : base (path,
filter)
{
registerEventsToBase();
}

private void registerEventsToBase()
{
base.Created += new
FileSystemEventHandler(MyFileSystemWatcher_Created);
}

private void MyFileSystemWatcher_Created(object sender,
FileSystemEventArgs e)
{
if (this.Created != null) Created(sender, e);
}

public void ClearCreatedEvents()
{
if (this.Created == null) return;

foreach(FileSystemEventHandler eventHandler in
this.Created.GetInvocationList())
{
this.Created -= eventHandler;
}
}
}

Die anderen Events kannst Du auch noch überschreiben, falls benötigt.

Grüße
Walter


"Volker Heil" wrote in message
news:
Hi,

ich habe eine Klasse, in der zu verschiedenen Zeiten und von
verschiedenen Programmteilen aus Filesystemwatcher-Events zugefügt
werden können.

...
localeFSW=new FileSystemWatcher(txtNeuerOrdner);
localeFSW.Created += new FileSystemEventHandler(OnChanged);
...

Dabei verwende ich also die localeFSW immer wieder.
Soweit geht es aber prima!

Gibt es eine Möglichkeit diese mit einem Schlag wieder zu entfernen?
Oder wenigstens eine Art Auflistung, welche Ordner gerade überwacht
werden um diese dann einzeln zu entfernen?
Dass ich diese mit [ localeFSW.Created -= ... ] wieder löschen kann
ist mir klar, aber dann müßte ich mir jeweils woanders merken welche
Ordner gerade überwacht werden und das wàre reichlich
Verwaltungsaufwand.

Wie werde ich diese Events also mit einem Schlag wieder los?

Tschüss,

Volker

Ähnliche fragen