【发布时间】:2015-02-12 18:06:48
【问题描述】:
我正在尝试了解 async await 的用法,我研究了几篇博客文章,现在我制作了一个测试代码,但它并没有按照我期望的方式工作。
我有一个返回列表的方法:
private List<Employee> GetEmployees()
{
IList<Employee> list = new List<Employee>();
list.Add(new Employee() { Id = 1, Age = 20, Name = "Kavin" });
list.Add(new Employee() { Id = 2, Age = 30, Name = "Alen" });
list.Add(new Employee() { Id = 3, Age = 20, Name = "Suresh" });
list.Add(new Employee() { Id = 4, Age = 30, Name = "Jay" });
list.Add(new Employee() { Id = 5, Age = 20, Name = "Nanda" });
list.Add(new Employee() { Id = 5, Age = 20, Name = "Kavin" });
list.Add(new Employee() { Id = 5, Age = 20, Name = "Kavin" });
list.Add(new Employee() { Id = 1, Age = 23, Name = "Test" });
return list;
}
然后我写了我的异步方法:
private async Task<List<Employee>> TestEmployeesGetAsync()
{
var result = await Task.Run(() => GetEmployees());
return result;
}
当我调用这个方法时:
var Result = TestEmployeesGetAsync();
视觉工作室告诉我它返回Task<List<T>>,它的用法是:
List<Employee> result = await TestEmployeesGetAsync();
为什么我需要把 await 放在调用方法上,如果我放 await 它当然会产生编译器错误,因为 await 也应该有异步。有人可以清除我的想法如何调用它,以便我可以得到List<T>而不是Task<List<T>>
【问题讨论】:
-
@JohnWoo 我怎么能从中得到
List<T> -
您已经展示了如何获取
List<T>,但您需要在方法上加上async关键字,以便使用await。 -
我已经创建了异步方法,现在我想要调用它并获取
List<T>来调用我的异步方法我必须创建另一个方法吗? -
查看my
async-awaitcuration 上的文章,了解async-await以及如何使用它。
标签: c# .net asynchronous task-parallel-library async-await