ASP.NET MVC 4中的异步操作

use*_*252 5 c# asynchronous async-await asp.net-mvc-4

我有一个同步调用,我需要转换为异步,我使用async/await关键字,但这只有在任务完成后才返回我需要做的是将结果逐个返回给UI.

方案是我已经对用户进行了身份验证后显示了一个任务列表但是我希望一旦从DB中检索到任务就一次加载一个任务列表,这里是我的actionResult,它将搜索条件放在一起 - 过滤任务:

public async Task<ActionResult> Index(string searchTerm = null, int page = 1)
{
    Shared.InitialiseCriteria(SearchCriteria);
    SearchCriteria.DepartmentID = DepartmentID;
    SearchCriteria.PageSize = 15;
    SearchCriteria.FreeText = searchTerm;

    var model = await DoStuff(SearchCriteria);

        if (Request.IsAjaxRequest())
        {
            return PartialView("_ConversationList", model);
        }
    return View(model);

 }
Run Code Online (Sandbox Code Playgroud)

这是await任务,它调用GetConversation,它基本上在找到第一个任务时获取任务我需要将它加载到Index视图:

private async Task<Result> DoStuff(CSearchCriteria SearchCriteria)
{

   return GetConversations(SearchCriteria);
}
Run Code Online (Sandbox Code Playgroud)

Ole*_*kyi 4

ASP.NET MVC 中异步控制器的唯一目的是在异步操作进行时释放 IIS 线程来管理其他一些请求。从调用者的角度来看,这与使用同步控制器相同。

所以,我不认为你可以用异步控制器实现你想要的(你可以使用它,但它不会解决你的问题)。

我认为您可以在服务器端实现某种分页来检索部分数据并通过SignalR将其发送到客户端。