【发布时间】:2017-04-08 01:55:56
【问题描述】:
我有一个返回对象的 List 的方法。此方法需要一段时间才能运行。
private List<MyObject> GetBigList()
{
... slow stuff
}
从 4 或 5 个来源调用此方法。所以,我想我会尝试使用 async 和 await 来在这个列表构建时让事情继续进行。我添加了这个方法:
public async Task<List<MyObject>> GetBigListAsync()
{
var resultsTask = GetBigList();
var resuls = await resultsTask;
return resuls;
}
但是,在这一行:
var resuls = await resultsTask;
我收到此错误:
List
不包含 GetAwaiter 的定义, 并且找不到接受 List 类型的第一个参数的扩展方法“GetAwaiter”。
我错过了什么?
【问题讨论】:
-
您的示例代码没有显示在 GetBigList 方法中对 Task 的任何使用,也没有标记为异步,这意味着无法等待该方法的结果。
-
尝试异步任务
- > GetBigList()
-
记住,await 不会把同步操作变成异步操作。 Await 将当前方法的剩余部分注册为已经存在的异步操作的延续。 Await 是关于管理异步,而不是创建它。如果您希望同步操作是异步的,您将不得不想办法实现它。
-
I think This Link My Help You List.add() 异步任务等待正确的语法
标签: c# async-await