如何向任务添加取消令牌
本文关键字:取消 令牌 添加 任务 | 更新日期: 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);