【发布时间】:2019-03-04 16:18:16
【问题描述】:
我有多个 Async 方法可以一个一个运行,但是当我使用 Task.WhenAll 时,我真的不知道如何得到结果。以下是我的异步方法
public async Task<IEnumerable<MyModel>> Method1Async()
{
return await Task<IEnumerable<MyModel>>.Run<IEnumerable<MyModel>>(() => GetMethod1Data());
}
//Here Method1Async().Result will get me the data but don't know how to get the result when I am using Task.WhenAll()
public async Task<IEnumerable<MyModel>> Method2Async()
{
return await Task<IEnumerable<MyModel>>.Run<IEnumerable<MyModel>>(() => GetMethod2Data());
}
public async Task<IEnumerable<MyModel>> Method3Async()
{
return await Task<IEnumerable<MyModel>>.Run<IEnumerable<MyModel>>(() => GetMethod3Data());
}
这是我使用 Task.WhenAll 的代码
public async Task GetDataAsync()
{
Task[] tasks = new Task[3];
tasks[0] = Method1Async();
tasks[1] = Method2Async();
tasks[2] = Method2Async();
await Task.WhenAll(tasks).ConfigureAwait(false);
}
现在如果我打电话
GetDataAsync()
方法,一切正常,但不知道如何从返回的任务中获取结果?
【问题讨论】:
-
它将是
Array[IEnumerable<MYModel>] -
顺便说一句,
Run是Task上的静态方法。无需使用Task<T>.Run。并且应该推断Run的参数。只需Task.Run(() => GetMethod1Data())即可。
标签: c# asynchronous