private void PopulateBestiaryCollectionAsync() { if (Global.Instance.BestiaryCollection.Count <= 0) { var uiThread = TaskScheduler.FromCurrentSynchronizationContext(); Task bk2Thread = Task.Factory.StartNew(() => ClearBestiaryInfo()) .ContinueWith(t1 => IoC.Get <IEventAggregator>().PublishOnUIThread("OpenProgressDialog"), uiThread) .ContinueWith(t2 => PopulateBestiaryCollection()) .ContinueWith(t3 => ClearBestiaryInfo()) .ContinueWith(t4 => IoC.Get <IEventAggregator>().PublishOnUIThread("CancelRootDialog"), uiThread); } else if (BestiaryCollection.Count <= 0) { BestiaryCollection = new BindableCollection <BestiaryCollection>(Global.Instance.BestiaryCollection); } else { if (!BestiaryCollection.SequenceEqual(Global.Instance.BestiaryCollection)) { var uiThread = TaskScheduler.FromCurrentSynchronizationContext(); Task bk2Thread = Task.Factory.StartNew(() => ClearBestiaryInfo()) .ContinueWith(t1 => IoC.Get <IEventAggregator>().PublishOnUIThread("OpenProgressDialog"), uiThread) .ContinueWith(t2 => PopulateBestiaryCollection()) .ContinueWith(t3 => ClearBestiaryInfo()) .ContinueWith(t4 => IoC.Get <IEventAggregator>().PublishOnUIThread("CancelRootDialog"), uiThread); } } }
public void DeleteBestiary() { try { int beastID = BestiaryCollection[SelectedIndex].ID; var forgeDatabase = Global.Instance.ForgeDatabase(); BESTIARY beast = forgeDatabase.Bestiary.Single(x => x.ID == beastID); forgeDatabase.Bestiary.DeleteOnSubmit(beast); forgeDatabase.SubmitChanges(); BestiaryCollection.RemoveAt(SelectedIndex); Global.Instance.BestiaryCollection = new BindableCollection <BestiaryCollection>(BestiaryCollection); ClearBestiaryInfo(); SelectedIndex = -1; } catch { } }