【问题标题】:Is there no Async implementation of MSMQ send in .net 4.5.net 4.5 中是否没有 MSMQ 异步实现发送
【发布时间】:2015-04-30 06:20:02
【问题描述】:

我想知道为什么没有 MSMQ 发送的异步实现?我正在使用.net 4.5。我错过了什么吗?

【问题讨论】:

  • 为什么要异步Send 方法?向队列发送内容不应该花费太多时间,以至于需要异步发送。您是否正在尝试向远程队列发送内容?您是否遇到过特定问题,或者您是否试图避免总体上的阻塞?

标签: .net c#-4.0 .net-4.5 msmq


【解决方案1】:

不正确,Send 被阻塞,尽管它只写入本地队列。

在调用MessageQueue.Send(..)之前调用await Task.Yield();

如果你纯粹使用 async/await,这将对吞吐量产生相当大的影响。

【讨论】:

    【解决方案2】:

    应该不需要Send 的异步版本,因为Send 是异步的。

    来自MSDN

    在消息队列中发送消息始终是异步的 手术。当您确定队列已打开时,您可以继续 无需停下来等待回复即可发送消息。

    甚至for remote queues

    当消息发送到远程计算机上打开的队列时,消息 > 队列将消息存储在本地计算机上的传出队列中。

    您是否遇到了特定的性能问题,或者您想使用异步方法以防Send 导致阻塞?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-04
      • 2012-09-09
      • 2012-05-29
      相关资源
      最近更新 更多