Проблема связана с использованием оператора using
:
using (_watcher = new FileSystemWatcher(directory, "*.xml"))
Когда выполнение достигает конца блока using
, наблюдатель удаляется, что означает, что он больше не может вызывать события,
Удалите использование, чтобы решить вашу проблему:
_watcher = new FileSystemWatcher(directory, "*.xml");
Но возникает другая проблема - никогда не выбрасывать наблюдателя.Подход может заключаться в реализации IDisposable
на FileWatcherClass
и последующей утилизации наблюдателя по мере необходимости:
public void Dispose()
{
_watcher?.Dispose(); // if _watcher isn't null, dispose it
}
Тогда вы можете просто утилизировать свой экземпляр FileWatcherClass
, когда закончите с ним.