title: FileSystemWatcher not raising when files are copied or moved to folder
body: <blockquote>
    <p><strong>Possible Duplicate:</strong><br>
    <a href="https://stackoverflow.com/questions/1286114/detecting-moved-files-using-filesystemwatcher">Detecting moved files using FileSystemWatcher</a>  </p>
  </blockquote>
  
  
  
  <p>I was looking for a solution to watch a directory and notify my app whenever a new file is moved into the directory. The Obvious solution was to use FileSystemWatcher class of the .NET.</p>
  
  <p>But the problem is , it raises a event a new file is created/deleted in the folder but does not raises event when a file is moved/copied into the folder.</p>
  
  <p>Can anyone tell me what could be the cause of such behavior.</p>
  
  <p>my code is </p>
  
  <pre><code>static void Main(string[] args)
      {
          Run();
      }
  
      [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
      public static void Run()
      {
          // Create a new FileSystemWatcher and set its properties.
          FileSystemWatcher watcher = new FileSystemWatcher();
          watcher.Path = @"D:\New folder";
          /* Watch for changes in LastAccess and LastWrite times, and
             the renaming of files or directories. */
          watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
             | NotifyFilters.FileName | NotifyFilters.DirectoryName;
          // Only watch text files.
          watcher.Filter = "*.txt";
  
          // Add event handlers.
          watcher.Changed += new FileSystemEventHandler(OnChanged);
          watcher.Created += new FileSystemEventHandler(OnChanged);
          watcher.Deleted += new FileSystemEventHandler(OnChanged);
          watcher.Renamed += new RenamedEventHandler(OnRenamed);
  
          // Begin watching.
          watcher.EnableRaisingEvents = true;
  
          // Wait for the user to quit the program.
          Console.WriteLine("Press \'q\' to quit the sample.");
          while (Console.Read() != 'q') ;
      }
  
      // Define the event handlers.
      private static void OnChanged(object source, FileSystemEventArgs e)
      {
          // Specify what is done when a file is changed, created, or deleted.
          Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType);
      }
  
      private static void OnRenamed(object source, RenamedEventArgs e)
      {
          // Specify what is done when a file is renamed.
          Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);
      }
  </code></pre>