/ / C # FileWatcher-Filter [Duplikat] - c #, Zeichenfolge, Dateiwächter

C # FileWatcher-Filter [duplizieren] - c #, Zeichenfolge, Datei-Watcher

Ich habe eine Methode in meinem Dienst, wo ich die Dienstkonfigurationsdatei beobachte. Es sieht so aus:

private void WatchConfigurationFile()
{
var fileLocation = Assembly.GetExecutingAssembly().Location;


watcher.Path = Path.GetDirectoryName(fileLocation);
watcher.NotifyFilter = NotifyFilters.LastWrite;
watcher.Filter = fileLocation + ".config";

watcher.Changed += new FileSystemEventHandler(OnConfigChange);
watcher.EnableRaisingEvents = true;


Log.DebugFormat("config location: {0}", watcher.Filter.ToString());

}

Das Protokoll gibt den vollständigen Dateipfad der Zieldatei einschließlich des Speicherorts zurück: C / Benutzer etc

Wenn ich meine Konfigurationsdatei aktualisiere, werden die Änderungen nicht in meinen Protokolldateien angezeigt. Die Protokollierung erfolgt wie folgt:

private void OnConfigChange(object source, FileSystemEventArgs e)
{
ConfigurationManager.RefreshSection("appSettings");
Log.DebugFormat("Updated ConnectionString: {0}", ConfigurationManager.AppSettings["dbConn"]);
}

Wie auch immer, in meiner File Watcher-Klasse, wenn ich den Filter auf den tatsächlichen Namen der Datei ändere, was in meinem Fall der Name des Service-Exe mit einer ".config" am Ende ist. Es funktioniert gut.

Warum funktioniert das eine und das andere nicht?

Antworten:

2 für die Antwort № 1

Du solltest benutzen watcher.Filter = "*.config"; für alle Konfigurationsdateien oder sonst watcher.Filter = "yourFileName.config"; für eine bestimmte Datei. Keine Notwendigkeit, den vollständigen Pfad hier anzugeben;

Nach MSDN: Um Änderungen in allen Dateien zu sehen, legen Sie den Filter festEigenschaft zu einem leeren Zeichenfolge (""). Um eine bestimmte Datei anzuzeigen, legen Sie die Filter-Eigenschaft auf die fest Dateiname. Um beispielsweise nach Änderungen in der Datei MyDoc.txt zu suchen, Setzen Sie die Filter-Eigenschaft auf "MyDoc.txt". Sie können auch nach Änderungen Ausschau halten in einer bestimmten Art von Datei. Zum Beispiel, um nach Änderungen in jedem zu sehen Textdateien, legen Sie die Eigenschaft Filter auf ".txt ". Verwendung von mehreren Filter wie ".txt | * .doc "wird nicht unterstützt.