FileSystemWatcher
クラスを使用してディレクトリの変更を監視しているプログラムがあります。他のクライアントが。を使用してこのディレクトリに書き込んでいますStreamWriter
。「時々」、filesystemwatcherが作成したイベントで、ファイルにアクセスしようとすると、エラーが発生します。
これは頻繁には発生しないため、デバッグは非常に困難です。Using
クライアントは、ストリームをブロックで囲むことにより、ストリームを適切に閉じています。エラーは「このアプリケーションは別のプロセスで使用されているため、ファイルを使用できません」の行にあります。クライアントが同じコードを使用してファイルをディレクトリに書き込んでいるときに、エラーが散発的にしか表示されないのはなぜですか。ほとんどの場合、手動コピーでエラーが発生することがあります。
問題のディレクトリはネットワークディレクトリではなく、そのローカルです。提案してください。
クライアントコード
using (StreamWriter ss = new StreamWriter(input)) {
ss.WriteLine(args(0));
ss.Close();
}
アプリケーションイベントコードの監視
public void Temp()
{
FileSystemWatcher fs = new FileSystemWatcher();
fs.Path = GlobalStatics.PathWorkOrders;
fs.IncludeSubdirectories = false;
fs.Filter = "*.wo";
fs.EnableRaisingEvents = true;
fs.Created += CreatedEvent;
}
public void CreatedEvent(object sender, System.IO.FileSystemEventArgs e)
{
string guidStr = Path.GetFileNameWithoutExtension(e.FullPath);
using (StreamReader sr = new StreamReader(e.FullPath))
{
//Processing
sr.Close();
}
}