异步/等待取消

时间:2014-08-04 19:20:19

标签: c# asp.net-mvc asynchronous

在MVC Action Method中给出以下代码:

    public async Task<PartialViewResult> PatientFilterAll(PatientFilterQuery patientFilterQuery)
    {
        int count = await Task.Run(() => _patientService.GetAllPatientsCount(patientFilterQuery));

        IList<PatientDTO> patients = await Task.Run(() => GetPatientList(patientFilterQuery));

        Cookie.Set("RecordCount", Convert.ToString(count));

        return PartialView("List", patients);
    }

PatientFilterQuery是一组带有搜索条件的下拉框。首先请求客户端分页的总计数,然后是搜索条件。

如果在发出请求后更改了Drop Down,则会生成对Action方法的新请求。结果有时原始请求在几秒钟后由第二个请求的响应完成。

如何停止第一个请求并仅返回第二个请求?

1 个答案:

答案 0 :(得分:0)

  • 您需要完全更改异步设计。使用Task.Run方法并不意味着它是异步操作。 more info
  • 如果您使用的是ADO.NET或EF,则会有一组新的real异步方法,根本不需要Task.Runmore info
  • 异步操作方法可以具有CancellationToken参数。 more info