private void ChangeHandler(object sender, RegistryChangeEventArgs e) { Logger.Trace("ChangeHandler called for {BasePath}", BasePath); var newAutostarts = GetCurrentAutoStarts(); var addedAutostarts = new List <RegistryAutoStartEntry>(); var removedAutostarts = new List <RegistryAutoStartEntry>(); foreach (var newAutostart in newAutostarts) { var found = false; foreach (var lastAutostart in lastAutostarts) { if (newAutostart.Equals(lastAutostart)) { found = true; break; } } if (!found) { addedAutostarts.Add((RegistryAutoStartEntry)newAutostart); } } foreach (var lastAutostart in lastAutostarts) { var found = false; foreach (var newAutostart in newAutostarts) { if (newAutostart.Equals(lastAutostart)) { found = true; break; } } if (!found) { removedAutostarts.Add(lastAutostart); } } foreach (var addedAutostart in addedAutostarts) { Application.Current.Dispatcher.Invoke(delegate { Add?.Invoke(addedAutostart); }); } foreach (var removedAutostart in removedAutostarts) { Application.Current.Dispatcher.Invoke(delegate { Remove?.Invoke(removedAutostart); }); } lastAutostarts.Clear(); foreach (var newAutoStartEntry in newAutostarts) { lastAutostarts.Add((RegistryAutoStartEntry)newAutoStartEntry); } }
private void ErrorHandler(object sender, RegistryChangeEventArgs e) { Logger.Error("Error on monitoring of {BasePath}: {@Exception}", BasePath, e); }