2016-03-20 6 views
1

FileSystemWatcherの動作方法を理解できません。ファイルが存在するのを待ってから別の関数を呼び出すコードを取得しようとしています。私のコードは次の通りです:FileSystemWatcher ArgumentException

文字列path2 = @ "N:\ reuther \ TimeCheck \ cavmsbayss.log";

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

その後、私はそのイベントが呼ばれたら、ファイルを処理する別々の機能を持っている:

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

しかし、それは

ディレクトリ名N:\ルーサー\ TIMECHECK \ cavmsbayss .logは無効です。

+0

ファイルではなくディレクトリを見ることができます。 [MSDN](https://msdn.microsoft.com/en-us/library/b36854c3(v = vs.110).aspx) –

+0

作成するファイルを監視する方法はありませんか? –

+0

'Created'イベントが発生した後でなければなりません。 –

答えて

3

docsによれば、pathパラメータが示す:

監視するディレクトリ、標準または汎用命名規則(UNC)表記。

特定のファイル、ディレクトリへのパスを渡していない:

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; 

それからちょうどFileSystemEventArgsクラスのいずれかNameまたはFullPathプロパティを使用して、そのファイルの作成に気を付ける:

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

私はそのコードに問題があります...私はそれを使用しようとしました: string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); 文字列path2 = desktopPath + @ "\" + @ "RaidTimestamps \"; FileSystemWatcher fw =新しいFileSystemWatcher(パス2); fw.Created + = fileSystemWatcher_Created; static void fileSystemWatcher_Created(オブジェクト送信者、FileSystemEventArgs e) { MessageBox.Show(e.Name); if(e.Name == "orvmsnw1ss.log") { MessageBox.Show( "Ok im here now"); } } –

+0

上記では、何も表示されていません。パスが100%正しいことがわかっていても、コードは実行されません。 –

+0

'fileSystemWatcher_Created'メソッドの最初の行にブレークポイントを配置してみてください。それはまったくヒットしますか? 'e.Name'と' e.FullName'の値をチェックして、期待通りのものであることを確認してください。 –