У меня возникли проблемы с использованием новых инструментов async/wait в С#. Вот мой сценарий:
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() с сообщением об ошибке "" Пуск "не может быть вызван в задачу в стиле обеда." сообщение об ошибке, похоже, не появляется в Google или Bing, поэтому я не уверен, что это значит. Это моя проблема номер один, как заставить это работать. Я также попробовал TaskFactory.StartNew(), но не понял, как передать параметры моему методу таким образом.