,这是因为在并行循环中,某个任务被取消了,但是在循环中的其他任务仍然在尝试访问已取消的任务,导致异常的抛出。
解决这个问题的方法是在循环中使用CancellationToken来检查任务是否已取消,然后在任务被取消时及时退出循环。具体步骤如下:
下面是一个示例代码:
CancellationTokenSource cts = new CancellationTokenSource();
CancellationToken token = cts.Token;
try
{
Parallel.ForEach(collection, (item) =>
{
if (token.IsCancellationRequested)
{
// 任务已取消,退出循环
return;
}
// 执行任务代码
// ...
});
}
catch (OperationCanceledException)
{
// 捕获任务取消异常
// 可以在这里进行一些清理工作
}
finally
{
cts.Dispose();
}
这样,当某个任务被取消时,其他任务会及时退出循环,避免了布尔值包含任务已取消异常的发生。
关于C#中的Parallel.Foreach和并行编程的更多信息,你可以参考腾讯云的产品文档:Parallel.ForEach。
注意:以上答案中没有提及具体的云计算品牌商,如有需要,请自行查阅相关资料。
领取专属 10元无门槛券
手把手带您无忧上云