2008-11-11 45 views

Trả lời

7

Bạn cần kết nối lại với FileSystemWatcher.

Biến biến loại FileSystemWatcher thành lớp của bạn, thêm Event WatcherError.

Bên trong phương pháp này, thêm một cái gì đó như thế:

private static void WatcherError(object source, ErrorEventArgs e) 
    { 
    watcher = new FileSystemWatcher();//You might want to do a method and to setup all config... 
    while (!watcher.EnableRaisingEvents) 
    { 
     try 
     { 
      watcher = new FileSystemWatcher();//You might want to do a method and to setup all config... 
     } 
     catch 
     { 
      System.Threading.Thread.Sleep(30000); //Wait for retry 30 sec. 
     } 
    } 
    } 

Bạn không muốn sử dụng watcher = new ... bạn muốn có một phương pháp mà sẽ thêm tất cả sự kiện và thiết lập con đường nhưng mã ở trên cung cấp cho bạn ý tưởng tốt về việc cần làm.

+0

Mã này không đáng tin cậy vì FileSystemWatcher không phải lúc nào cũng kích hoạt sự kiện Lỗi khi thư mục mạng hoặc ổ đĩa được giám sát. – Tomas

+0

Khi Mạng bị lỗi, hiển thị lỗi. Tình huống ở đâu không đáng tin cậy? –

+0

Nếu FileSystemWatcher được sử dụng để giám sát thư mục mạng, FileSystemWatcher.Error không phải lúc nào cũng được kích hoạt nếu có sự cố với mạng. Đây là vấn đề đã biết và mã của bạn sẽ không được thực hiện. – Tomas

Các vấn đề liên quan