我正在查看示例,只是想了解await
MVC AsyncController 中的关键字。我觉得以下应该可以工作,因为我只是想异步返回一个列表。这只是理解async
关键字的示例:
public async Task<ActionResult> Index()
{
var s = await SelectAsync();
return View(s);
}
private async Task<IEnumerable<Student>> SelectAsync()
{
var ctx = new Test.MVC4.Repository.StudentDataContext;
return await ctx.Students.ToList();
}
我知道这Task<IEnumerable<Student>>
是不可等待的。我的印象是Task
s 是可以等待的。
更新:这样的事情怎么样(假设 EF 代码已被抽象为 .Select 方法?
public async Task<ActionResult> Index()
{
var s = await SelectAsync();
return View(s);
}
private async Task<IEnumerable<Student>> SelectAsync()
{
return _repo.Select();
}
或者我还需要在 SelectAsync 方法中使用 Task.Run 吗?我习惯于在客户端做这种事情,所以我很感激这些方法的帮助......