我正在介绍Task,并且做到了这一点:
在Main:
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'
我已经被愚弄了(动作),但无济于事。 实际上,我真的不明白我在这里做了什么,所以想从论坛中学习。
正如您从代码片段中看到的那样,我已经通过转到返回类型的void来减少Async方法的接口。不知道这是否真的让事情变得更容易。
答案 0 :(得分:2)
Task.Run(TW.DoingMegaFlops_Async)
是&#34;方法组&#34; Task.Run(() => TW.DoingMegaFlops_Async())
的简写 - 允许它,因为您正在调用没有参数的方法。
但是,在使用参数调用方法时,必须包含它:
Task.Run(() => TW.DoingMegaFlops_Async(wtokenSource.Token), wtokenSource.Token);