Disponieren von FileSystemWatcher

Meines Wissens nach muss die übergeordnete Klasse bei Verwendung einer Klasse, die IDisposable implementiert, auch die IDisposable-Schnittstelle implementieren. (FileWatcher mit FileSystemWatcher)

Also, wenn Sie FileSystemWatcher verwenden, wie können Sie FileSystemWatcher ordnungsgemäß entsorgen? Ich möchte, dass FileWatcher erst entsorgt wird, wenn die Anwendung geschlossen ist.

Würde ich Responsible Owner Pattern verwenden? (Try / finally) oder etwas anderes? Sollte mein FileWatcher auch IDisposable implementieren? Ich kann nicht mit {} arbeiten, da dieser FileWatcher die Dateiänderungen während der gesamten Laufzeit der Anwendung beobachten sollte. Wie gehe ich mit diesem Szenario um?

public class FileWatcher : IFileWatcher
{
    private FileSystemWatcher watcher;

    public event EventHandler<EventArgs> SettingsChanged;

    public FileWatcher(bool start)
    {
        this.RegisterForChanges();
    }

    public void OnChanged(object source, EventArgs e)
    {
        if (this.SettingsChanged != null)
        {
            this.SettingsChanged(source, new EventArgs());
        }
    }

    private void RegisterForChanges()
    {
        /// more code here etc
        ...
        this.watcher = new FileSystemWatcher
                           {
                               Path = directory, 
                               NotifyFilter =
                                   NotifyFilters.LastAccess | NotifyFilters.LastWrite
                                   | NotifyFilters.FileName | NotifyFilters.DirectoryName, 
                               Filter = fileName
                           };

        // Add event handlers.
        this.watcher.Changed += this.OnChanged;

        // Begin watching.
        this.watcher.EnableRaisingEvents = true;
    }

Antworten auf die Frage(4)

Ihre Antwort auf die Frage