如何向任务添加取消令牌?
how to add a Cancellation Token to a Task?
我开始接触 Task,并走到了这一步:
主线:
Task<double> t = Task.Run(TW.DoingMegaFlops_Async);
在 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);
在台湾class:
public async void DoingMegaFlops_Async(CancellationToken wtoken)
{...await...; return;}
Main 中的构建错误是:
Cannot convert from 'void' to 'System.Action'
我已经胡乱投射到(Action),但没有用。
其实我也不是很明白我在这里做什么,所以想从论坛上学习。
正如您从代码片段中看到的那样,我已经通过转到 return 类型的 void 来减少 Async 方法的接口。不知道这是否真的让事情变得更容易。
Task.Run(TW.DoingMegaFlops_Async)
对于 Task.Run(() => TW.DoingMegaFlops_Async())
是 "Method Group" shorthand - 这是允许的,因为您正在调用不带参数的方法。
但是,当调用带有参数的方法时,您必须包含它:
Task.Run(() => TW.DoingMegaFlops_Async(wtokenSource.Token), wtokenSource.Token);
我开始接触 Task,并走到了这一步:
主线:
Task<double> t = Task.Run(TW.DoingMegaFlops_Async);
在 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);
在台湾class:
public async void DoingMegaFlops_Async(CancellationToken wtoken)
{...await...; return;}
Main 中的构建错误是:
Cannot convert from 'void' to 'System.Action'
我已经胡乱投射到(Action),但没有用。 其实我也不是很明白我在这里做什么,所以想从论坛上学习。
正如您从代码片段中看到的那样,我已经通过转到 return 类型的 void 来减少 Async 方法的接口。不知道这是否真的让事情变得更容易。
Task.Run(TW.DoingMegaFlops_Async)
对于 Task.Run(() => TW.DoingMegaFlops_Async())
是 "Method Group" shorthand - 这是允许的,因为您正在调用不带参数的方法。
但是,当调用带有参数的方法时,您必须包含它:
Task.Run(() => TW.DoingMegaFlops_Async(wtokenSource.Token), wtokenSource.Token);