繁体   English   中英

如何向任务添加取消令牌?

[英]how to add a Cancellation Token to a Task?

我将被介绍给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'

我已经愚弄了对(Action)的转换,但无济于事。 实际上,我不太了解自己在这里做什么,因此想向论坛学习。

从代码片段中可以看到,我已经通过返回void类型来缩减Async方法的接口。 不知道这是否真的使事情变得容易。

Task.Run(TW.DoingMegaFlops_Async)Task.Run(() => TW.DoingMegaFlops_Async()) “方法组”的简写-之所以允许,是因为您正在调用没有参数的方法。

但是,在调用带有参数的方法时,必须包括它:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM