title: Disposing of FileSystemWatcher
body: <p>So my understanding is that whenever using a class that implements IDisposable, it's parent also needs to implement IDisposable interface. (FileWatcher using FileSystemWatcher)</p>
  
  <p>So when using FileSystemWatcher what is the proper way of disposing of FileSystemWatcher? I want FileWatcher not to be disposed/(watching) until application is closed.</p>
  
  <p>Would I use Responsible Owner Pattern?(try/finally) or something else?
  Should my FileWatcher also implement IDisposable? I won't be able to use using{} since this fileWatcher should be watching the file changes the whole time application runs. What is the proper way of handling this scenario?</p>
  
  <pre><code>public class FileWatcher : IFileWatcher
  {
      private FileSystemWatcher watcher;
  
      public event EventHandler&lt;EventArgs&gt; 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;
      }
  </code></pre>