void ExecuteLoadItemsCommand() { if (IsBusy) { return; } IsBusy = true; try { Performances.Clear(); var items = Event.Performances; foreach (var item in items) { Performances.Add(item); } } catch (Exception ex) { Debug.WriteLine(ex); } finally { IsBusy = false; } }
//Load Items Asynchronious public void LoadItems() { IList <PerformanceVM> calculateModels = new List <PerformanceVM>(); Performances.Clear(); BackgroundWorker worker = new BackgroundWorker(); worker.DoWork += new DoWorkEventHandler((sender, args) => { IList <Venue> venues = administrationService.GetVenues(); foreach (Venue venue in venues) { IList <Performance> performances = administrationService.GetPerformancesByVenueAndDay(venue, CurrentDate); if (performances.Count > 4) { return; } DateTime d = CurrentDate.Date; Performance col1 = new Performance(); col1.StagingTime = d.AddHours(14); Performance col2 = new Performance(); col2.StagingTime = d.AddHours(15); Performance col3 = new Performance(); col3.StagingTime = d.AddHours(16); Performance col4 = new Performance(); col4.StagingTime = d.AddHours(17); Performance col5 = new Performance(); col5.StagingTime = d.AddHours(18); foreach (Performance p in performances) { if (p.StagingTime.Hour >= 18) { col5 = p; } else if (p.StagingTime.Hour >= 17) { col4 = p; } else if (p.StagingTime.Hour >= 16) { col3 = p; } else if (p.StagingTime.Hour >= 15) { col2 = p; } else if (p.StagingTime.Hour >= 14) { col1 = p; } } calculateModels.Add(new PerformanceVM(venue, col1, col2, col3, col4, col5, administrationService, this)); } }); worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler((sender, args) => { Performances.Clear(); foreach (PerformanceVM vm in calculateModels) { vm.GroupCheckBox(); Performances.Add(vm); } RaisePropertyChangedEvent(nameof(Performances)); }); worker.RunWorkerAsync(System.Reflection.Assembly.GetExecutingAssembly().Location); }