【发布时间】:2016-10-13 23:18:23
【问题描述】:
我被介绍给 Task,并走到这一步:
在主要:
Task<double> t = Task.Run(TW.DoingMegaFlops_Async);
在 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'
我已经玩弄了投射到(动作),但无济于事。 其实我不是很明白我在这里做什么,所以想向论坛学习。
正如您从代码 sn-ps 中看到的,我已经通过转到 void 的返回类型来减少 Async 方法的接口。不知道这是否真的让事情变得更容易了。
【问题讨论】:
-
确实,我宁愿返回一些有用的数据。这就是我需要取消令牌的原因,这样当应用停止时,我可以以干净的方式停止任务,并显示一些任务结果数据。
标签: c# task cancellation-token