【发布时间】:2015-03-16 07:54:08
【问题描述】:
下面是我的代码的简化版本,它会产生以下编译错误
无法将类型“void”隐式转换为“System.Threading.Tasks.Task”
在这种情况下,GetDataAsync 方法不需要返回任何内容。我怎样才能让它返回一个我可以等待的任务?
static async void Run()
{
List<string> IDs = new List<string>() { "a", "b", "c", "d", "e", "f" };
Task[] tasks = new Task[IDs.Count];
for (int i = 0; i < IDs.Count; i++)
tasks[i] = await GetDataAsync(IDs[i]);
Task.WaitAll(tasks);
}
async static Task GetDataAsync(string id)
{
var data = await Task.Run(() => GetDataSynchronous(id));
// some other logic to display data in ui
}
【问题讨论】:
-
GetDataAsync正在返回一个任务,但是,Run不是。async void只能用于事件处理程序。
标签: c# .net task-parallel-library async-await task