Синтаксис для запуска многих асинхронных задач в c#

У меня возникли проблемы с использованием новых инструментов async/await в C#. Вот мой сценарий:

static async Task<bool> ManageSomeRemoteTask(int Id, bool flag)
{
    var result = await serviceClient.AuthenticateIdAsync(Id);
    [... Setup Some Data ...]
    await serviceClient.LongAndSlowRemoteCallAsync(Data);
}

static void SendATonOfJunkToSomeWebServiceThatDoesntSupportBatches
{
    var myTasks = Dictionary<int, Task<bool>>();
    while(IdsLeftToProcess > 0 )
    {
      Task<bool> t = ManageSomeRemoteTask(Id, true);
      myTasks.Add(IdsLeftToProcess ,t);
      myTasks[IdsLeftToProcess].Start();
      IdsLeftToProcess --;
    }

    Task.WaitAll(myTasks.Values.ToArray()); //Wait until they are all done
    [... Report statistics ...]
}

У меня есть 1 проблема: когда я пытаюсь запустить это, я получаю InvalidOperationException в Start() с сообщением об ошибке «Start не может быть вызван для задачи в стиле обещания. «Похоже, это сообщение об ошибке не появляется в Google или Bing, поэтому я не уверен, что оно означает. Это моя забота номер один, как заставить это работать. Я также пробовал TaskFactory.StartNew(), но не понимал, как таким образом передавать параметры моему методу.

15
задан abatishchev 2 May 2014 в 02:43
поделиться