C# で新しい async/await ツールを使用する際に問題があります。これが私のシナリオです:
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 ...]
}
これを実行しようとすると、Start() で InvalidOperationException が発生し、「Start may not be called on a promise-style task.」というエラー メッセージが表示されるという問題が 1 つあります。 GoogleまたはBingなので、それが何を意味するのかわかりません。これが私の最大の関心事です。これを実行する方法です。TaskFactory.StartNew() も試しましたが、メソッドにパラメーターを渡す方法がわかりませんでした。