private void BtnStart_Click(object sender, RoutedEventArgs e) { stopWorker = false; ShowStartButton = false; ShowStopButton = true; //ShowPauseButton = true; WorkerStatus = JMMClient.Properties.Resources.Community_GettingData; TraktResults.Clear(); TraktWorkerJob job = new TraktWorkerJob(); job.TraktData = TraktResults; job.CheckTraktLinks = chkTraktValid.IsChecked.Value; if (job.CheckTraktLinks) { job.FixTraktLinks = chkTraktValidCleanup.IsChecked.Value; } job.CheckCommunityLinks = chkCommRec.IsChecked.Value; job.MaxProblems = int.MaxValue; if (chkLimitSeries.IsChecked.Value && udLimitSeries.Value.HasValue) { job.MaxProblems = udLimitSeries.Value.Value; } dataWorker.RunWorkerAsync(job); }
void dataWorker_DoWork(object sender, DoWorkEventArgs e) { TraktWorkerJob job = e.Argument as TraktWorkerJob; BackgroundWorker worker = sender as BackgroundWorker; // Get all the seies data List <JMMServerBinary.Contract_AnimeSeries> sersRaw = JMMServerVM.Instance.clientBinaryHTTP.GetAllSeries(JMMServerVM.Instance.CurrentUser.JMMUserID.Value); List <AnimeSeriesVM> allSeries = new List <AnimeSeriesVM>(); foreach (JMMServerBinary.Contract_AnimeSeries contract in sersRaw) { AnimeSeriesVM ser = new AnimeSeriesVM(contract); allSeries.Add(ser); if (stopWorker) { return; } } List <SortPropOrFieldAndDirection> sortCriteria = new List <SortPropOrFieldAndDirection>(); sortCriteria.Add(new SortPropOrFieldAndDirection("SeriesName", false, SortType.eString)); allSeries = Sorting.MultiSort <AnimeSeriesVM>(allSeries, sortCriteria); if (stopWorker) { return; } System.Windows.Application.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, (Action) delegate() { WorkerStatus = JMMClient.Properties.Resources.Community_TraktRef; }); // get all the trakt links List <CrossRef_AniDB_TraktVMV2> allTraktCrossRefs = new List <CrossRef_AniDB_TraktVMV2>(); List <JMMServerBinary.Contract_CrossRef_AniDB_TraktV2> traktxrefs = JMMServerVM.Instance.clientBinaryHTTP.GetAllTraktCrossRefs(); foreach (JMMServerBinary.Contract_CrossRef_AniDB_TraktV2 raw in traktxrefs) { allTraktCrossRefs.Add(new CrossRef_AniDB_TraktVMV2(raw)); if (stopWorker) { return; } } int counter = 0; int problemCount = 0; foreach (AnimeSeriesVM ser in allSeries) { counter++; //Thread.Sleep(200); dataWorker.ReportProgress(0, new TraktWorkerStatusContainer(JMMClient.Properties.Resources.Community_TraktPopulating, allSeries.Count, counter, ser.SeriesName)); TraktSeriesData trakt = new TraktSeriesData(ser); // populate the Trakt data trakt.SetUserTraktLinks(allTraktCrossRefs.Where(x => x.AnimeID == ser.AniDB_ID)); System.Windows.Application.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, (Action) delegate() { job.TraktData.Add(trakt); }); if (stopWorker) { return; } } if (stopWorker) { return; } int curFile = 0; foreach (TraktSeriesData data in job.TraktData) { if (stopWorker) { return; } //Thread.Sleep(250); if (problemCount == job.MaxProblems) { return; } curFile++; dataWorker.ReportProgress(0, new TraktWorkerStatusContainer(JMMClient.Properties.Resources.Community_TraktSeriesCheck, job.TraktData.Count, curFile, data.SeriesName)); if (stopWorker) { return; } if (job.CheckTraktLinks) { data.Status = JMMClient.Properties.Resources.Community_TraktDataCheck; bool valid = true; if (data.HasUserTraktLink) { foreach (CrossRef_AniDB_TraktVMV2 xref in data.UserTraktLinks) { bool thisValid = JMMServerVM.Instance.clientBinaryHTTP.CheckTraktLinkValidity(xref.TraktID, job.FixTraktLinks); if (!thisValid) { valid = false; problemCount++; } } data.IsTraktLinkValid = valid; } } if (stopWorker) { return; } if (job.CheckCommunityLinks) { data.Status = JMMClient.Properties.Resources.Community_TraktCompare; List <JMMServerBinary.Contract_Azure_CrossRef_AniDB_Trakt> xrefs = JMMServerVM.Instance.clientBinaryHTTP.GetTraktCrossRefWebCache(data.AnimeID, false); List <CrossRef_AniDB_TraktVMV2> commTraktLinks = new List <CrossRef_AniDB_TraktVMV2>(); foreach (JMMServerBinary.Contract_Azure_CrossRef_AniDB_Trakt xref in xrefs) { CrossRef_AniDB_TraktVMV2 xrefComm = new CrossRef_AniDB_TraktVMV2(xref); commTraktLinks.Add(xrefComm); } data.SetCommTraktLinks(commTraktLinks); if (data.HasUserTraktLink) { data.CompareTraktLinks(); if (!data.UserTraktLinkMatch && data.HasCommTraktLink) { problemCount++; } } else { } } } }
private void BtnStart_Click(object sender, RoutedEventArgs e) { stopWorker = false; ShowStartButton = false; ShowStopButton = true; //ShowPauseButton = true; WorkerStatus = "Getting all series data..."; TraktResults.Clear(); TraktWorkerJob job = new TraktWorkerJob(); job.TraktData = TraktResults; job.CheckTraktLinks = chkTraktValid.IsChecked.Value; if (job.CheckTraktLinks) job.FixTraktLinks = chkTraktValidCleanup.IsChecked.Value; job.CheckCommunityLinks = chkCommRec.IsChecked.Value; job.MaxProblems = int.MaxValue; if (chkLimitSeries.IsChecked.Value && udLimitSeries.Value.HasValue) job.MaxProblems = udLimitSeries.Value.Value; dataWorker.RunWorkerAsync(job); }