Ich benutze den FileSystemWatcher, um zu benachrichtigen, wenn die neuen Dateien im Netzwerkverzeichnis erstellt werden. Wir verarbeiten die Textdateien (ca. 5 KB Größe) und löschen sie sofort, wenn die neue Datei im Verzeichnis erstellt wird. Wenn der FileSystemWatcher-Windows-Dienst aus irgendeinem Grund beendet wird, müssen wir nach dem erneuten Starten der Datei nach den unverarbeiteten Dateien suchen. Wie kann ich damit umgehen, wenn die neue Datei beim Verarbeiten der alten Dateien aus dem Verzeichnis kommt? Irgendwelche Beispiele bitte?FileSystemWatcher und unverarbeitete Dateien
Danke,
Hier ist der Code Beispiel, das ich mit einer einfachen Form haben.
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);
}
}
}
Danke für die Antwort. Ich habe darüber nachgedacht. –
Obwohl unwahrscheinlich, ist dies keine gute Lösung. Zwischen der letzten Überprüfung auf Dateien und dem Initialisieren des Watcher konnte eine Datei erstellt werden. – johnw182