有谁知道为什么 System.Messaging 不提供异步版本的 Send 方法来将 MSMQ 消息发送到队列。
实际上有 Peek 和 Receive 方法的异步版本(通过可以转换为 C#5 异步等待方法的 Begin/End 对),但令人惊讶的是,没有提供 BeginSend/EndSend 方法,只是在我看来的 Send 方法这是一个同步阻塞 I/O 调用。
我认为这不是 System.Messaging 的限制,而是 System.Messaging 使用的本机消息队列 API (mqrt.dll) 之一,它采用重叠结构作为函数中的参数,MQReceiveMessage
以使用重叠 I/O 和 IOCP,而函数MQsendMessage
不采用这种结构,所以看起来它是一个纯粹的同步调用。
我的问题仍然存在,任何人都会知道为什么 MessageQueue API 不提供将消息发送到队列的异步方式?