异步/等待取消

本文关键字:取消 等待 异步 | 更新日期: 2023-09-27 18:16:16

给定MVC动作方法中的以下代码:

    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是一组带有搜索条件的下拉框。首先为客户端分页请求总数,然后是搜索条件。

如果在发出请求后更改了dropdown,则会生成对Action方法的新请求。结果有时是原始请求在几秒钟后得到满足,然后是对第二个请求的响应。

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

异步/等待取消

    你需要彻底改变你的异步设计。使用Task.Run方法并不意味着它是一个异步操作。更多信息
  • 如果您正在使用ADO。NET或EF,他们有一组新的real异步方法,根本不需要Task.Run。更多信息
  • 异步动作方法可以有一个CancellationToken参数。更多信息