private async Task ScrapAsync(IScraper scraper) { await Task.Run(() => { var progress = new Progress<double>(x => { DispatcherHelper.CheckBeginInvokeOnUI(() => this.ScrapProgress = x); }); var tracks = scraper.Scrap(progress) .Distinct(new TrackComparer()); foreach (var track in tracks) { DispatcherHelper.CheckBeginInvokeOnUI(() => this.ScrapedTracks.Add(track)); } }); }