我正在尝试理解async await的用法,我研究了一些博客文章,现在我编写了一个测试代码,但它的工作方式并不是我期望的。我有一个方法返回List:
然后我写了我的异步方法:
当我调用这个方法时:
Visual Studio 告诉我它返回
为什么如果我在调用方法上放置了await,但没有使用async会导致编译错误呢?这当然是因为
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();
Visual Studio 告诉我它返回
Task<List<T>>
,用法是:List<Employee> result = await TestEmployeesGetAsync();
为什么如果我在调用方法上放置了await,但没有使用async会导致编译错误呢?这当然是因为
await
应该与async
一起使用。有人能告诉我如何调用它,以便我可以得到List<T>
而不是Task<List<T>>
吗?
List<T>
? - Ehsan SajjadList<T>
,但你需要在方法上加上async
关键字,这样才能使用await
。 - John Wooasync-await
整理上的文章,了解async-await
以及如何使用它。 - Paulo Morgado