public void ReloadMerged() { Store.LoadMergedDatasets(); PetDatasetsList.Clear(); PetDatasetsList.AddRange(Store.ResultDatasets); PetDatasetsList.AddRange(Store.ArchiveDatasets); PetDatasetsList.AddRange(Store.MergedDatasets); PetDatasets.Refresh(); }
public void LoadDataset(string path, DatasetLoadFailedCallback callback) { Store = null; DatasetLoaded = false; IsLoading = true; LoadProgressCount = 0; LoadTotalCount = 1; ProjectPath = "No project loaded"; PetDatasetsList.Clear(); PetDatasets.Refresh(); TestBenchDatasetsList.Clear(); TestBenchDatasets.Refresh(); var uiContext = TaskScheduler.FromCurrentSynchronizationContext(); Task <DatasetStore> loadTask = new Task <DatasetStore>(() => { var newStore = new DatasetStore(path, (completed, total) => { Task.Factory.StartNew(() => { LoadProgressCount = completed; LoadTotalCount = total; }, new CancellationToken(), TaskCreationOptions.None, uiContext); }); return(newStore); }); loadTask.ContinueWith(task => { IsLoading = false; if (task.Exception != null) { if (callback != null) { task.Exception.Handle(exception => { if (callback != null) { callback(exception); } return(true); }); } } else { Store = task.Result; PetDatasetsList.Clear(); PetDatasetsList.AddRange(Store.ResultDatasets); PetDatasetsList.AddRange(Store.ArchiveDatasets); PetDatasetsList.AddRange(Store.MergedDatasets); PetDatasets.Refresh(); TestBenchDatasetsList.Clear(); TestBenchDatasetsList.AddRange(Store.TestbenchDatasets); TestBenchDatasets.Refresh(); ProjectPath = System.IO.Path.GetFullPath(path); DatasetLoaded = true; } }, TaskScheduler.FromCurrentSynchronizationContext()); //this should run on the UI thread loadTask.Start(); }