C# FileSystemWatcher Disposed sich von selbst?
Hallo,
warum auch immer, aber mein FileSystemWatcher Disposed sich immer von selbst. Ich benutze eine Console Anwendung (.Net Framework.4.8).
Das komische, ich habe das mal bei Windows Forms benutzt vor 2 Tagen, da lief es wunderbar, warum disposed der sofort in der Console?
log.Info(Path.GetDirectoryName(args[0]));
try
{
using (fileSystemWatcher = new FileSystemWatcher(Path.GetDirectoryName(args[0])))
{
fileSystemWatcher.IncludeSubdirectories = true;
fileSystemWatcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.Size | NotifyFilters.Attributes | NotifyFilters.CreationTime;
fileSystemWatcher.Filter = "*.js";
fileSystemWatcher.Changed += new FileSystemEventHandler(JSChanged);
fileSystemWatcher.Disposed += new EventHandler(JSDisposed);
fileSystemWatcher.Error += new ErrorEventHandler(JSError);
fileSystemWatcher.EnableRaisingEvents = true;
}
}
catch(Exception ex)
{
log.Error(ex.Message);
}
Der Ordnerpfad ist korrekt, das habe ich oben mit log.Info geprüft. Habe ich irgendwas übersehen?
Es wird das fileSystemWatcher.Disposed Event aufgerufen
Danke schon mal im Voraus
Habe jetzt using entfernt und es ging, aber trotzdem verstehe ich nicht, warum man das hier nicht benutzen darf
1 Antwort
Das ist nicht verwunderlich, wenn man weiß, wozu ein using-Block da ist: Es ist ein expliziter Aufräumer. Am Ende des Blocks wird für das im using-Kopf kreierte Objekt explizit die Dispose-Methode aufgerufen.