Używam FileSystemWatcher
(w aplikacji sieci web ASP.NET) do monitorowania pliku zmian. Obserwator jest skonfigurowany w konstruktorze klasy Singleton, np .:Czy muszę zachować odniesienie do FileSystemWatcher?
private SingletonConstructor()
{
var fileToWatch = "{absolute path to file}";
var fsw = new FileSystemWatcher(
Path.GetDirectoryName(fileToWatch),
Path.GetFileName(fileToWatch));
fsw.Changed += OnFileChanged;
fsw.EnableRaisingEvents = true;
}
private void OnFileChanged(object sender, FileSystemEventArgs e)
{
// process file...
}
Wszystko do tej pory działa dobrze. Ale moje pytanie brzmi:
Czy bezpiecznie jest skonfigurować obserwatora za pomocą zmiennej lokalnej (var fsw
)? Czy powinienem zachować odniesienie do niego w prywatnym polu, aby zapobiec gromadzeniu śmieci?
Nie mogę znaleźć żadnej dokumentacji, aby powiedzieć, że 'EnableRaisingEvents' ma jakikolwiek wpływ na odśmiecanie. Myślałem, że lokalne pole jest potrzebne do zapewnienia, że 'FileSystemWatcher' nie jest zbiorem śmieci. – Lukazoid
Edytowałem swoją odpowiedź na przykładzie, który pokazuje, że FileSystemWatcher jest zbędny, jeśli EnableRaisingEvents jest fałszywe. –
Dziękuję za to, chciałbym, aby ta funkcjonalność została udokumentowana w MSDN, wygląda na to, że zbyt łatwo byłoby skończyć z jakimś wiszącym 'FileSystemWatcher's. – Lukazoid