私はFileSystemWatcherを使用して、新しいファイルがネットワークディレクトリに作成されたことを通知しています。テキストファイル(約5KBサイズ)を処理し、新しいファイルがディレクトリに作成されると直ちに削除します。 FileSystemWatcher Windowsサービスが何らかの理由で停止した場合、未処理のファイルがバックアップされて実行された後にそのファイルを検索する必要があります。ディレクトリから古いファイルを処理しているときに新しいファイルが来たらどうすればいいですか?どのような例をお願いしますか?FileSystemWatcherと未処理のファイル
ありがとう、
私はシンプルなフォームで持っているコード例です。
public partial class Form1 : Form
{
private System.IO.FileSystemWatcher watcher;
string tempDirectory = @"C:\test\";
public Form1()
{
InitializeComponent();
CreateWatcher();
GetUnprocessedFiles();
}
private void CreateWatcher()
{
//Create a new FileSystemWatcher.
watcher = new FileSystemWatcher();
watcher.Filter = "*.txt";
watcher.NotifyFilter = NotifyFilters.FileName;
//Subscribe to the Created event.
watcher.Created += new FileSystemEventHandler(watcher_FileCreated);
watcher.Path = @"C:\test\";
watcher.EnableRaisingEvents = true;
}
void watcher_FileCreated(object sender, FileSystemEventArgs e)
{
//Parse text file.
FileInfo objFileInfo = new FileInfo(e.FullPath);
if (!objFileInfo.Exists) return;
ParseMessage(e.FullPath);
}
void ParseMessage(string filePath)
{
// Parse text file here
}
void GetUnprocessedFiles()
{
// Put all txt files into array.
string[] array1 = Directory.GetFiles(@"C:\test\");
foreach (string name in array1)
{
string path = string.Format("{0}{1}", tempDirectory, name)
ParseMessage(path);
}
}
}
返信いただきありがとうございます。私はそれについて考えました。 –
これはありえませんが、これは良い解決策ではありません。ファイルの最後のチェックとウォッチャーの初期化の間にファイルを作成することができます。 – johnw182