Я использую FileSystemWatcher для уведомления о создании новых файлов в сетевом каталоге. Мы обрабатываем текстовые файлы (размером около 5 КБ) и удаляем их сразу же после создания нового файла в каталоге. Если служба Windows FileSystemWatcher прекращается по какой-то причине, мы должны искать необработанные файлы после их восстановления и запуска. Как я могу обработать, будет ли новый файл при обработке старых файлов из каталога? Любые примеры, пожалуйста?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);
}
}
}
Спасибо за ответ. Я думал об этом. – 2009-08-20 14:32:44
Хотя это маловероятно, это нехорошее решение. Файл может быть создан между последней проверкой файлов и инициализацией наблюдателя. – johnw182