2016-03-20 7 views
1

Ich habe Probleme zu verstehen, wie FileSystemWatcher funktionieren soll. Ich versuche, meinen Code auf das Vorhandensein einer Datei warten zu lassen und dann eine andere Funktion aufzurufen. Mein Code ist wie folgt:FileSystemWatcher ArgumentException

string path2 = @ "N: \ reuther \ TimeCheck \ cavmsbayss.log";

 FileSystemWatcher fw = new FileSystemWatcher(path2); 
     fw.Created += fileSystemWatcher_Created; 

Dann habe ich eine separate Funktion, die die Datei geöffnet werden soll, sobald seine Veranstaltung aufgerufen:

 static void fileSystemWatcher_Created(object sender, FileSystemEventArgs e) 
    { 
     MessageBox.Show("Ok im here now"); 
    } 

Aber es

Der Verzeichnisname N: \ reuther \ Timecheck \ cavmsbayss .log ist ungültig.

+0

Sie können ein Verzeichnis, keine Datei ansehen. [MSDN] (https://msdn.microsoft.com/en-us/library/b36854c3 (v = vs.110) .aspx) –

+0

Gibt es keine Möglichkeit, nach einer Datei zu suchen, die erstellt wird? –

+0

Sollte sein, sobald das Ereignis 'Created' ausgelöst wird. –

Antwort

3

Nach den docs, die path Parameter geben:

Das Verzeichnis zu überwachen, in Standard- oder Universal Naming Convention (UNC) Notation.

Pass es der Pfad zu dem Verzeichnis, nicht die bestimmte Datei:

string pathToMonitor = @"N:\reuther\TimeCheck"; 
FileSystemWatcher fw = new FileSystemWatcher(pathToMonitor); 
fw.EnableRaisingEvents = true; // the default is false, you may have to set this too 
fw.Created += fileSystemWatcher_Created; 

Dann achten Sie nur für die Erstellung der Datei, entweder die Name oder FullPath Eigenschaft in der FileSystemEventArgs-Klasse:

static void fileSystemWatcher_Created(object sender, FileSystemEventArgs e) 
{ 
    if (e.Name == "cavmsbayss.log") 
    { 
     MessageBox.Show("Ok im here now"); 
    } 
} 
+0

Ich habe ein Problem mit diesem Code ... Ich habe versucht, es zu verwenden: Zeichenfolge desktopPath = Environment.GetFolderPath (Environment.SpecialFolder.Desktop); Zeichenfolge path2 = desktopPath + @ "\" + @ "RaidTimestamps \"; FileSystemWatcher fw = neuer FileSystemWatcher (path2); fw.Created + = fileSystemWatcher_Created; statische void fileSystemWatcher_Created (Objekt Absender, FileSystemEventArgs e) { MessageBox.Show (e.Name); if (e.Name == "orvmsnw1ss.log") { MessageBox.Show ("Ok bin ich jetzt hier"); } } –

+0

Mit den oben genannten, nichts zeigt sich überhaupt. Das bedeutet, dass der Code nicht ausgeführt wird, obwohl ich weiß, dass der Pfad zu 100% korrekt ist. –

+0

Versuchen Sie, einen Unterbrechungspunkt in der ersten Zeile der Methode 'fileSystemWatcher_Created' zu platzieren. Wird es überhaupt getroffen? Überprüfen Sie die Werte von 'e.Name' und' e.FullName', um sicherzustellen, dass sie Ihren Erwartungen entsprechen. –

Verwandte Themen