public void Restart() { if (_taskModel != null) { _cts.Cancel(); try { _taskModel.ContinueWith(a => { }).Wait(); _cts.Dispose(); } catch (AggregateException ae) { Log.Error($"Message: {ae.Flatten()}", ae); } catch (Exception e) { Log.Error($"Message: {e.Message}", e); } } // I have decided not to clear out the SelectionTracker. The system will still remember old selections _picCollection.Clear(); _extions = ConfigValue.Inst.FileExtensionsToConsider(); _cts = new CancellationTokenSource(); _taskModel = Task.Run(() => RetrievePictures(), _cts.Token); }