使用Task<>有什么好处? &安培;等待将项目加载到视图中

时间:2014-01-18 23:33:54

标签: c# asynchronous

我正在研究一些示例UoW模式并且遇到过这个问题:

public interface ICustomerService
{
    Task<IEnumerable<Customer>> GetAsync();
}

// GET: /Customer/
public async Task<ActionResult> Index()
{
    return View(await _customerService.GetAsync());
}

我理解任务用于执行异步操作,但GetAsync有什么优势,而不仅仅是在IEnumerable声明它(因为使用await)或这是否意味着它可以立即返回视图,并且在视图渲染时可以在后台加载Customer个对象吗?

1 个答案:

答案 0 :(得分:2)

它不会立即返回视图as I describe on my blog

相反,在ASP.NET上,异步请求的好处是可伸缩性。当对客户服务的调用正在进行时,请求线程被释放以执行其他工作,例如,处理另一个请求。当await完成时,会选择另一个请求线程来完成原始请求,并返回实际视图。

有关详细信息,请参阅slides from my recent CodeMash talk