当前位置: 首页 > 知识库问答 >
问题:

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

松和璧
2023-03-14

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

应用程序不能为特定请求混合同步和异步方法。如果调用BeginGetRequestStream方法,则必须使用BeginGetResponse方法检索响应。

反之亦然吗?如果调用BegingetResponse异步读取响应,是否还应该使用BegingetRequestStream编写请求?

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

共有1个答案

严修谨
2023-03-14

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

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

 类似资料:
  • 我正在尝试设置log4j2以使用异步记录器将所有消息记录到滚动文件中。 是否有一种方法可以创建另一个记录程序来捕获所有事件?还有别的想法吗? 下面是我的log4j2.xml:

  • 使用log4j2,我很难让同步记录器和异步记录器一起工作。 从这里以Apache文档(标题为混合同步和异步记录器)为例,运行下面的应用程序将简单地创建日志文件,但不向其写入任何内容。我也不确定添加两个记录器指向同一个appender,但它的Apache留档,所以我假设这是好的。 LOG4J2配置 pom.xml 应用 但是,如果我更改log4j2配置并修改loggers元素以读取以下内容,我将在日

  • 同步调用异步方法最安全的方法是什么?

  • 我有点困惑。请看看下面的代码。 我确信调用此序列是可能的。 虽然我仍然有一个小小的困惑,但我们可以很容易地看到也调用方法,这是一个静态方法。方法 是调用非同步静态方法的静态同步方法。当 thread-2 获得类级锁时,为什么从 Thread-1 调用 没有被阻止? 我只是在逻辑上感到困惑,如果一个线程获得类级锁定,则该类其他非同步静态方法保持打开状态,以便从其他方法(实例方法)调用。为什么?

  • 问题内容: 在Java中制作异步方法的同步版本的最佳方法是什么? 假设您有一个使用以下两种方法的类: 您将如何实现直到任务完成才返回的同步? 问题答案: 看看CountDownLatch。您可以使用以下类似方式模拟所需的同步行为: 您还可以通过2个参与者使用相同的行为,如下所示: 但是,如果您可以控制I 的源代码,建议您重新设计它以返回一个对象。这样,您可以在需要时轻松地在异步/同步行为之间进行切

  • 问题内容: 同步和异步AJAX调用有什么区别?何时使用同步以及何时异步? 问题答案: 在最基本的级别上,当您希望调用在后台发生时,您可以使用异步模式,而当您希望代码等待直到调用完成时,则可以使用同步模式。 异步模式是AJAX调用的常用方法,因为通常在事件上附加一个回调函数,以便您可以在服务器端数据就绪时进行响应,而不必等待数据到达。