【发布时间】:2013-02-14 19:41:15
【问题描述】:
在我的方法RecalcChartAsync 中,我做了一些时间密集型的工作......所以我想我会做一些异步的事情。
我想启动CreateHistogramAsyncCalculatePropValuesAsync这两个方法,同时在我的RecalcChartsAsync中做一些事情,最后等待它完成。
private async void RecalcChartsAsync()
{
var histogram = CreateHistogramAsync();
var propValues = CalculatePropValuesAsync();
//do some other stuff
await histogram;
await propValues;
}
private async Task CreateHistogramAsync()
{
//do some stuff
}
private async Task CalculatePropValuesAsync()
{
//do some stuff
}
我不确定我的做法是否正确,因为 ReSharper 在 CreateHistogramAsync 和 CalculatePropValueAsync 的异步关键字处给了我以下警告:
此异步方法缺少“等待”运算符,将同步运行。考虑使用 await 运算符来等待非阻塞 API 调用,...
现在我不确定我是否以正确的方式使用这个异步的东西。
【问题讨论】:
-
在实现异步方法时总是返回 Task
。否则,您将失去与该方法的任何连接。这可能是问题,尤其是在测试期间。 -
另外,如果你想等待更多任务完成,你可以使用
await Task.WhenAll(params Task[] tasks)
标签: c# task-parallel-library .net-4.5 async-await