如何向任务添加取消令牌

本文关键字:取消 令牌 添加 任务 | 更新日期: 2023-09-27 18:13:00

我开始了解任务了,并走了这么远:

在主要

:

 Task<double> t = Task.Run(TW.DoingMegaFlops_Async);

Where in class TW:

 public async Task<double> DoingMegaFlops_Async()
 {...await ...; return 0.0;}

我的概念控制台应用程序构建和运行得很好。问题是如何用Cancellation Token展开它。我试过了:

CancellationTokenSource wtokenSource= new CancellationTokenSource();
Task.Run(TW.DoingMegaFlops_Async(wtokenSource.Token), wtokenSource.Token);

,在TW类中:

public async void DoingMegaFlops_Async(CancellationToken wtoken)
{...await...; return;}

Main中的构建错误是:

Cannot convert from 'void' to 'System.Action'

我已经玩弄了cast to (Action),但是没有用。实际上,我不太明白我在这里做什么,所以想向论坛学习。

正如您从代码片段中看到的,我已经通过使用void返回类型减少了Async方法的接口。我不知道这是否真的让事情变得简单了。

如何向任务添加取消令牌

Task.Run(TW.DoingMegaFlops_Async)Task.Run(() => TW.DoingMegaFlops_Async())的"Method Group"简写-它是允许的,因为你正在调用一个没有参数的方法。

当调用带参数的方法时,必须包含它:

Task.Run(() => TW.DoingMegaFlops_Async(wtokenSource.Token), wtokenSource.Token);