2012-08-30 2 views
0

변경 사항을 모니터링하는 파일 용 작은 응용 프로그램을 작성했습니다. Path를 실행할 때마다 예외가 발생합니다. 그리고 나는 왜 그런지 이해할 수 없다. 그 길은 실제로 존재합니다.FileSystemWatcher 예외 상승

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.IO; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Run(); 
     } 

     public static void Run() 
     { 
      FileSystemWatcher watcher = new FileSystemWatcher(); 
      watcher.Path = @"D:\test\1.txt"; 
      watcher.NotifyFilter = NotifyFilters.LastWrite; 

      watcher.Changed +=new FileSystemEventHandler(watcher_Changed); 
      watcher.EnableRaisingEvents = true; 
     } 

static void watcher_Changed(object sender, FileSystemEventArgs e) 
{ 
    Console.WriteLine(e.ChangeType); 
} 


    } 
} 
+1

당신이 얻을 정확한 예외는 무엇입니까? try/catch 블록을 사용하여 디버깅을 좀 더 멋지게 만들 수 있습니다. – PhonicUK

답변

1

FileSystemWatcher.Path는 경로가 아닙니다 또한 두 개의 매개 변수, 경로 및 파일 필터를 취하는 생성자를 사용하여 모니터링을 제한 할 수 있습니다

watcher.Path = @"D:\test"; 
watcher.Filter = "1.txt"; 

private static void watcher_Changed(object source, FileSystemEventArgs e) 
{ 
    // this test is unnecessary if you plan to monitor only this file and 
    // have used the proper constructor or the filter property 
    if(e.Name == "1.txt") 
    { 
     WatcherChangeTypes wct = e.ChangeType; 
     Console.WriteLine("File {0} {1}", e.FullPath, wct.ToString()); 
    } 
} 

파일 이름이어야합니다.

FileSystemWatcher watcher = new FileSystemWatcher(@"d:\test", "1.txt"); 

See MSDN References

+0

예! try, catch 블록을 추가하고 오류가 발생하는 이유를 이해했습니다. 하지만 폴더를 설정하지 않고 파일 이름을 직접 설정할 수 있습니까? –

+0

필터를 사용하여 특정 파일을 모니터링 할 수 있습니다. –

+0

두 개의 인수를 사용하는 생성자를 사용하여 모니터링을 제한 할 수 있습니다. 모니터 할 경로 및 모니터 할 파일 이름이 될 수있는 파일 필터 – Steve