private void HandleScanCompleted(object sender, ScanCompletedEventArgs args) { //if (!args.Auto || args.Cancelled || args.Error || !args.UpdateNeeded) // return; //if (config.MonitorDrives && config.UpdateMode == UpdateMode.ScanAndUpdate) // updateTimer.Start(); }
private void HandleScanCompleted(object sender, ScanCompletedEventArgs args) { ((DataDrive)sender).ScanCompleted -= HandleScanCompleted; foreach (DataDriveViewModel vm in viewModel.Drives) if (vm.DataDrive == sender) vm.PropertyChanged -= HandleDataDrivePropertyChanged; if (args.UpdateNeeded) anyDriveNeedsUpdate = true; if (args.Error) scanError = true; Interlocked.Decrement(ref runningScans); if (runningScans > 0) return; scanning = false; viewModel.StopProgress(); if (cancelled) { viewModel.Status = Name + " cancelled"; End(); return; } if (scanError && AbortIfScanErrors) { // FIXME: Need to report what the errors were! viewModel.Status = "Error(s) encountered during scan"; End(); return; } // I don't like calling Run() on the ScanCompleted callback from DataDrive's scan thread, // so run it on the main UI thread instead. Application.Current.Dispatcher.BeginInvoke(new Action(() => { Run(); })); }