Утилизация FileSystemWatcher
Поэтому я понимаю, что всякий раз, когда используется класс, который реализует IDisposable, его родитель также должен реализовывать интерфейс IDisposable. (FileWatcher с использованием FileSystemWatcher)
Итак, когда вы используете FileSystemWatcher, как правильно избавиться от FileSystemWatcher? Я хочу, чтобы FileWatcher не удалялся / (смотрел), пока приложение не закрылось.
Буду ли я использовать шаблон ответственного владельца (попробовать / наконец) или что-то еще? Должен ли мой FileWatcher также реализовать IDisposable? Я не смогу использовать использование {}, так как этот fileWatcher должен наблюдать за изменениями файла в течение всего времени работы приложения. Как правильно обращаться с этим сценарием?
public class FileWatcher : IFileWatcher
{
private FileSystemWatcher watcher;
public event EventHandler<EventArgs> SettingsChanged;
public FileWatcher(bool start)
{
this.RegisterForChanges();
}
public void OnChanged(object source, EventArgs e)
{
if (this.SettingsChanged != null)
{
this.SettingsChanged(source, new EventArgs());
}
}
private void RegisterForChanges()
{
/// more code here etc
...
this.watcher = new FileSystemWatcher
{
Path = directory,
NotifyFilter =
NotifyFilters.LastAccess | NotifyFilters.LastWrite
| NotifyFilters.FileName | NotifyFilters.DirectoryName,
Filter = fileName
};
// Add event handlers.
this.watcher.Changed += this.OnChanged;
// Begin watching.
this.watcher.EnableRaisingEvents = true;
}