当我们在另一个异步方法中调用异步方法时,有时很少有任务发生冲突。
如果EventReceiverAsync的两个任务同时运行。例如,getData(1(和getData(2(并行运行。如果getData(2(响应比getData(1(快。在这种情况下,objPayload甚至会获取getData(2(响应用于任务1。有时会发生冲突。
private async Task EventReceiverAsync(ID)
{
Payload objPayload = await getData(ID);
}
private async Task<Payload> getData(string ID)
{
Payload objOutput= new Payload ();
objOutput = await CallAPI("/api/getapidata", ID);
return objOutput;
}
有没有办法通过任何Id或其他东西根据任务对输出进行分类?
例如,getData(1(和getData(2(并行运行。如果getData(2(响应比getData(1(快。在这种情况下,objPayload甚至为task1获取getData(2(响应。
这在您发布的代码中是不可能的。EventReceiverAsync
有两个调用,每个调用都有自己的objPayload
变量。无论完成顺序如何,任务1的objPayload
将接收getData(1)
的结果,而任务2的objPayload
将接收getData(2)
的结果。
只要您的代码返回其结果,混合结果就不会发生。然而,如果您的代码将某个共享变量设置为其";结果";,那么共享将必须由您来管理,以避免混淆结果。