C# .Net async ForEach()委托引发已取消的任务异常
我有以下c#代码: 有时我会收到TaskCancelledExceptionC# .Net async ForEach()委托引发已取消的任务异常,c#,.net,asynchronous,C#,.net,Asynchronous,我有以下c#代码: 有时我会收到TaskCancelledException 为什么会发生这种情况?ForEach中的委托类型是操作 Action的返回类型是void,这意味着您的异步项=> 等待剂量测定(项目)lambda转换为 async void doSomething(T项)。将async与void一起使用意味着它将被异步调用,并且不会在下一次迭代发生之前等待 您应该始终将async与Task返回类型一起使用 在本例中,您应该使用常用的foreach 因此,您的示例如下所示: forea
为什么会发生这种情况?ForEach中的委托类型是
操作
Action
的返回类型是void
,这意味着您的异步项=>
等待剂量测定(项目)
lambda转换为
async void doSomething(T项)
。将async
与void
一起使用意味着它将被异步调用,并且不会在下一次迭代发生之前等待
您应该始终将async
与Task
返回类型一起使用
在本例中,您应该使用常用的foreach
因此,您的示例如下所示:
foreach(var item in list)
{
await doSomething(item);
}
不要这样做
List.ForEach()
不支持异步。有关如何正确执行此操作的更多信息,请参阅
foreach(var item in list)
{
await doSomething(item);
}