运行 一个异步函数,无需等待 c# webforms 中的响应(即发即忘)

Run a async function without waiting for the response in c# webforms (fire and forget)

我有一个按钮可以发出创建文档的 REST 请求:


private void Click(object sender, ActionBaseEventArgs e)
{
   RequestQuotationDocument(quotation.Oid).ConfigureAwait(false);
}

private async System.Threading.Tasks.Task RequestQuotationDocument(int quotationId)
{
    HttpClient client = new HttpClient();
    var values = new 
    {
        DocumentType = "Quotation",
        Id = quotationId.ToString()
    };


    var content = new StringContent(JsonConvert.SerializeObject(values), System.Text.Encoding.UTF8,
        "application/json");

    await client.PostAsync(url, content);
}

但是页面仍在等待 POST 请求的响应。我如何使它真正异步?

How do I make this truly async?

在ASP.NET,await yields to the thread pool, not the client.

如果可能,我建议更换客户端,以便适当处理更长的请求;例如,通过 JavaScript 而不是点击处理程序调用它,并在完成时更新页面。

如果您确实需要 return 从 Web 请求中提早,那么您应该实施 basic distributed architecture。如我的博客所述,它由两部分组成:

  • 持久的工作队列。
  • 该队列的后端处理器。