混合使用HttpWebRequest的同步和异步方法

本文关键字:同步 异步方法 HttpWebRequest 混合 | 更新日期: 2023-09-27 18:00:23

在这个msdn页面上,我读到:

您的应用程序不能将同步和异步方法混合用于特定请求。如果调用BeginGetRequestStream方法必须使用BeginGetResponse方法来检索响应。

反之亦然吗?如果我调用BeginGetResponse异步读取响应,我是否也应该使用BeginGetRequestStream写入请求?

我的请求很小(100-1000个字符),响应可能很大。Jeffrey Richter的这篇文章似乎说,在小负载的情况下,它可以同步完成(并且不设置ContentLength属性)。这是正确的吗?

混合使用HttpWebRequest的同步和异步方法

技术上没有,可以异步发送请求和处理响应,反之亦然,这取决于您的需求,但通常不建议这样做。为了保持一致性,选择一种最能满足您需求的方法,并使用相同的方法实现请求/响应

例如,当您发送一个可能需要一些时间才能完成的报告请求时,您可能会混合使用各种方法。您希望同步发送请求,因为您希望在继续之前确保请求已完全发送(例如,如果从windows应用程序发送,则说明连接问题),但异步处理响应,因为您不想在等待响应返回时占用UI。尽管如此,我仍然建议您在发送/接收方面保持一致。