C#에서 새로운 비동기/대기 도구 사용에 문제가 있습니다. 여기 내 시나리오 :이 실행하려고 할 때 그 1 문제가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 ...]
}
, 나는 오류 메시지와 함께() 시작에 InvalidOperationException이 얻을 " 시작은 약속 스타일의 작업에 호출 할 수 없습니다 . "이 오류 메시지는 Google 또는 Bing에서 나오지 않아서 의미가 확실하지 않습니다. 이것이 나의 가장 큰 관심사인데, 이것이 실행되도록하는 방법입니다. TaskFactory.StartNew()를 시도했지만 매개 변수를 내 메서드에 전달하는 방법을 이해하지 못했습니다.
라인이 전혀 없을 것을, 당신이 뭔가를 잡아 당겨하지 않음으로써 약간의 시간을 절약 할 거라고 이미 같은 ... 사전 아웃에 대한 참조를 가지고 'myTasks [IdsLeftToProcess] .Start();'는 t.Start()에 의해 더 잘 표현되었을 것이다. (처음에 필요하다면) – spender