public void Dispose() {
if (_innerWatcher != null) {
_innerWatcher.EnableRaisingEvents = false;
_innerWatcher.Dispose();
_innerWatcher = null;
}
if (_helperWatcher != null) {
_helperWatcher.EnableRaisingEvents = false;
_helperWatcher.Dispose();
_helperWatcher = null;
}
lock (_listeners) {
_listeners.Clear();
}
}
}