【发布时间】:2021-12-14 07:09:08
【问题描述】:
关于这个例子:
return Task.Run(
async () => {
while (!stoppingToken.IsCancellationRequested) {
await Task.Delay(1000);
}
}, stoppingToken);
我是否应该将 stopToken 传递给 Task.Run?这如何改变代码行为?
【问题讨论】:
-
作为旁注,您可能想改为将任务标记为已取消并停止继续 docs.microsoft.com/en-us/dotnet/standard/parallel-programming/… 但这取决于您的用例。
-
附带说明,如果您希望
CancellationToken具有停止语义(从为变量stoppingToken选择的名称中可以明显看出),您应该处理并禁止所有OperationCanceledExceptions这可能会发生。通过将stoppingToken作为参数添加到Task.Run,您可以多注意这一点。
标签: c# .net asynchronous task