Как правильно использовать Task.WhenAll ()

Я пытаюсь использоватьTask.WhenAll ждать завершения нескольких задач.

Мой код ниже - он должен запускать несколько асинхронных задач, каждая из которых извлекает маршрут шины и затем добавляет их в локальный массив. Тем не мение,Task.WhenAll(...) немедленно возвращается, и количество массивов локальных маршрутов равно нулю. Это кажется странным, так как я ожидаю, что различныеawait заявления в каждомTask означать, что поток приостановлен, аTask не возвращается, пока не закончится.

List<Task> monitoredTasks = new List<Task>();
foreach (BusRouteIdentifier bri in stop.services)
{
    BusRouteRequest req = new BusRouteRequest(bri.id);

    // Start a new task to fetch the route for each stop
    Task getRouteTask = Task.Factory.StartNew(async () =>
    {
        var route = await BusDataProviderManager.DataProvider.DataBroker.getRoute(req);

            // Add the route to our array (on UI thread as it's observed)
            await dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, delegate
            {
                this.routes.Add(route);
            });
    });

    // Store the task in our monitoring list
    monitoredTasks .Add(getRouteTask);
}

Debug.WriteLine("Awaiting WHENALL");
await Task.WhenAll(monitoredTasks );
Debug.WriteLine(string.Format("WHENALL returned (routes count is {0} ", this.routes.Count));

this.OnWillEndFetchingRoutes(new EventArgs());

Я, очевидно, делаю что-то не так - но что?

Ответы на вопрос(2)

Ваш ответ на вопрос