2008-11-11 21 views

Antwort

7

Sie müssen erneut mit FileSystemWatcher verbinden.

Machen Sie Ihre Variable vom Typ FileSystemWatcher global zu Ihrer Klasse, fügen Sie das Ereignis WatcherError hinzu.

innerhalb der Methode, fügen Sie etwas wie folgt aus:

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. 
     } 
    } 
    } 

Sie wollen aber die nicht-Beobachter verwenden = new ... Sie würden es vorziehen, ein Verfahren zu haben, die alle Ereignis- und Setup den Pfad hinzufügen Code oben gibt Ihnen eine gute Idee, was zu tun ist.

+0

Dieser Code ist nicht zuverlässig, da FileSystemWatcher das Fehlerereignis nicht immer auslöst, wenn der Netzwerkordner oder das Laufwerk überwacht wird. – Tomas

+0

Wenn das Netzwerk heruntergefahren ist, wird eine Fehlermeldung angezeigt. In welcher Situation ist es nicht zuverlässig? –

+0

Wenn FileSystemWatcher zur Überwachung des Netzwerkordners verwendet wird, wird der FileSystemWatcher.Error nicht immer ausgelöst, wenn im Netzwerk ein Fehler auftritt. Dies ist ein bekanntes Problem und Ihr Code wird nicht ausgeführt. – Tomas