title: Using FileSystemWatcher to monitor a directory
body: <p>I am using a Windows Forms Application to monitor a directory and move the files dropped in it to another directory.</p>
  
  <p>At the moment it will copy the file to another directory, but when another file is added it will just end with no error message. Sometimes it does copy two files before ending on the third.</p>
  
  <p>Is this because I am using a Windows Form Application rather than a console app? Is there a way I can stop the program from ending and to keep watching the directory?</p>
  
  <pre><code>private void watch()
  {
    this.watcher = new FileSystemWatcher();
    watcher.Path = path;
    watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
                           | NotifyFilters.FileName | NotifyFilters.DirectoryName;
    watcher.Filter = "*.*";
    watcher.Changed += OnChanged;
    watcher.EnableRaisingEvents = true;
  }
  
  private void OnChanged(object source, FileSystemEventArgs e)
  {
    //Copies file to another directory.
  }
  
  public void Dispose()
  {
    // avoiding resource leak
    watcher.Changed -= OnChanged;
    this.watcher.Dispose();
  }
  </code></pre>