【问题标题】:Mix synchronous and asynchronous methods for HttpWebRequest为 HttpWebRequest 混合同步和异步方法
【发布时间】:2013-02-21 18:19:41
【问题描述】:

this msdn page 我读到:

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

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

我的请求很小(100-1000 个字符),响应可能很大。 Jeffrey Richter 的This post 似乎说,在有效负载较小的情况下,它可以同步完成(并且无需设置ContentLength 属性)。对吗?

【问题讨论】:

    标签: c# .net asynchronous httpwebrequest


    【解决方案1】:

    技术上不,您可以同步发送请求并异步处理响应,反之亦然,具体取决于您的要求,但通常不推荐。为了保持一致性,请选择最能满足您需求的方法,并使用相同的方法实现请求/响应

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

    【讨论】:

    • 感谢 DiskJunky,我同意你的观点,但为什么 msdn 如此明确?
    • 我认为主要是从维护的角度来看。对于有人来看你的代码来理解一种方法而不是两种方法来说更容易。简洁易读始终是优雅解决方案的一部分。至于 MSDN,他们必须推荐一种“最佳实践”方法来帮助培养良好的编码和设计
    猜你喜欢
    • 2013-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多