У меня есть это:Группа несколько асинхронных операций на потоке пользовательского интерфейса
BusyState.SetBusy("Updating Calendar Data");
Dispatcher.CurrentDispatcher.Invoke(new Action(async() =>
{
// calling "update" will hit servers outside my control and may take time
await PublicCalendars.Update();
await PrivateCalendars.Update();
// clearing the busy state should only happen when both update tasks are finished
BusyState.ClearBusy();
}));
В Vars PublicCalendars и PrivateCalendars оба расширения ObservableCollection и заполняются во время вызова, чтобы обновить. Коллекции привязаны к некоторому графическому интерфейсу WPF, поэтому добавление элементов должно происходить из потока пользовательского интерфейса.
Я хотел бы удалить ожидание и позволить оба вызова запускаться одновременно. Как я могу это сделать и все еще иметь свое занятое состояние, когда обе задачи завершены?
Кстати, я не думаю, что 'Dispatcher.CurrentDispatcher.Invoke()' необходимо здесь. Если 'CurrentDispatcher' возвращает правильный диспетчер, это означает, что вы находитесь в потоке пользовательского интерфейса, что означает, что вы можете вызвать все методы напрямую. – svick