public void Free() { List <string> toDelete = new List <string>(); for (int i = GarbageList.Count - 1; i >= 0; i--) { if (GarbageList[i].IsChecked) { toDelete.Add(GarbageList[i].Path); } } Parallel.ForEach(toDelete, FileHandler.DeletePath); GarbageList.Clear(); }
public async void Scan() { try { Progress = 0; OnPropertyChanged("Progress"); startTimer(); GarbageList.Clear(); OnPropertyChanged("GarbageCount"); int round = 100 / FilterList.Count; foreach (var filter in FilterList) { if (filter.IsChecked) { filter.Waiting = Visibility.Visible; List <Garbage> result = await Task <List <Garbage> > .Factory.StartNew(() => ScanByEverything(filter)); foreach (var garbage in result) { GarbageList.Add(garbage); } OnPropertyChanged("GarbageList"); OnPropertyChanged("GarbageCount"); filter.Waiting = Visibility.Collapsed; Progress += round; OnPropertyChanged("Progress"); } } Progress = 100; OnPropertyChanged("Progress"); } finally { stopTimer(); } }