Продолжить задачу после завершения всех задач

В каком-то классе я хочу асинхронно загрузить 2 коллекции с помощью Task и остановить индикатор занятости

Я пробую Что-то вроде этого

var uiScheduler = TaskScheduler.FromCurrentSynchronizationContext();
WaitingIndicatorViewModel.IsBusy = true;
var loadData1 = new Task<ObservableCollection<Data1>>(GetData1FromService).ContinueWith(t => Data1Collection = t.Result, uiScheduler);
var loadData2 = new Task<ObservableCollection<Data2>>(GetData2FromService).ContinueWith(t => Data2Collection = t.Result, uiScheduler);

Task.Factory.StartNew(() =>{
                loadData1.Start();//<--Exception here           
                loadData2.Start();
                Task.WaitAll(loadData1, loadData2);
        })
.ContinueWith(o => WaitingIndicatorViewModel.IsBusy = false, uiScheduler);

Но это вызывает исключение InvalidOperationException: Start не может быть вызван в продолжении задача.

Почему это не работает, и как я могу запустить задачу продолжения после завершения обеих задач, не блокируя текущий поток?

5
задан Arsen Mkrtchyan 27 October 2013 в 14:20
поделиться