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();
            }
        }