Beispiel #1
0
        public void ReloadMerged()
        {
            Store.LoadMergedDatasets();

            PetDatasetsList.Clear();
            PetDatasetsList.AddRange(Store.ResultDatasets);
            PetDatasetsList.AddRange(Store.ArchiveDatasets);
            PetDatasetsList.AddRange(Store.MergedDatasets);
            PetDatasets.Refresh();
        }
Beispiel #2
0
        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();
        }