System.Messaging - 为什么 MessageQueue 不提供 Send 的异步版本

2023-12-20

有人知道为什么 System.Messaging 不提供异步版本的 Send 方法来将 MSMQ 消息发送到队列。

实际上有 Peek 和 Receive 方法的异步版本(通过可以转换为 C#5 异步等待方法的 Begin/End 对),但令人惊讶的是没有提供 BeginSend/EndSend 方法,只有一个 Send 方法,在我看来就像这是一个同步阻塞 I/O 调用。

我认为这不是 System.Messaging 的限制,而是 System.Messaging 使用的本机消息队列 API (mqrt.dll) 之一,它采用重叠结构作为函数中的参数MQReceiveMessage通过 IOCP 使用重叠 I/O,而函数MQsendMessage不采用这样的结构,所以看起来它是一个纯粹的同步调用。

我的问题仍然存在,有人知道为什么 MessageQueue API 不提供向队列发送消息的异步方式吗?


The MSMQ 文档 http://msdn.microsoft.com/en-us/library/windows/desktop/ms711381%28v=vs.85%29.aspx声明发送“始终是异步操作”。我已经有一段时间没有使用 MSMQ 了,但是 IIRC 一旦发送,消息就会在尝试通过网络发送之前刷新到本地磁盘。

所以,虽然不是truly异步(它必须等待磁盘写入),它应该相当快。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

System.Messaging - 为什么 MessageQueue 不提供 Send 的异步版本 的相关文章

  • EF Core Group By 翻译支持条件总和

    听说 EF Core 2 1 将支持翻译小组 我感到非常兴奋 我下载了预览版并开始测试它 但发现我在很多地方仍然没有得到翻译分组 在下面的代码片段中 对 TotalFlagCases 的查询将阻止翻译分组工作 无论如何 我可以重写这个以便我
  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • 嵌套接口:将 IDictionary> 转换为 IDictionary>?

    我认为投射一个相当简单IDictionary
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • 如何使用 ICU 解析汉字数字字符?

    我正在编写一个使用 ICU 来解析由汉字数字字符组成的 Unicode 字符串的函数 并希望返回该字符串的整数值 五 gt 5 三十一 gt 31 五千九百七十二 gt 5972 我将区域设置设置为 Locale getJapan 并使用
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • 将 VSIX 功能添加到 C# 类库

    我有一个现有的单文件生成器 位于 C 类库中 如何将 VSIX 项目级功能添加到此项目 最终目标是编译我的类库项目并获得 VSIX 我实际上是在回答我自己的问题 这与Visual Studio 2017 中的单文件生成器更改 https s
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 使用 x509 证书签署 json 文档或字符串

    如何使用 x509 证书签署 json 文档或字符串 public static void fund string filePath C Users VIKAS Desktop Data xml Read the file XmlDocum
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • 链接器错误:已定义

    我尝试在 Microsoft Visual Studio 2012 中编译我的 Visual C 项目 使用 MFC 但出现以下错误 error LNK2005 void cdecl operator new unsigned int 2
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit

随机推荐

  • 在 python 中为 Tor 隐藏服务生成 private_key 和主机名

    usr bin env python import OpenSSL crypto as crypto import sha import base64 KEY BIT LENGTH 1024 ONION LENGTH 16 keys cry
  • Azure 工具 - 未将对象引用设置为对象的实例

    我正在尝试在 Visual Studio 2010 中创建一个使用 Windows Phone 空云应用程序 模板 Windows Azure 工具 的新项目 创建新项目时 它会打开一个小窗口 其中包含说明 自述文件 其中显示 在 解决方案
  • 在 .Net (C#) 中构建 Google 产品 Feed?

    以下是我试图遵循的架构
  • 带返回值的 Powershell 递归

    我正在尝试编写一个递归函数 它将返回数组中的信息 但是当我将 return 语句放入函数中时 它会丢失某些条目 我试图递归地查看指定深度的文件夹 获取与该文件夹关联的 acl 我知道 getChildItem 有一个递归选项 但我只想单步执
  • 将单个文件卷安装为 Docker 中的目录

    Docker 文档 http docs docker com engine userguide dockervolumes mount a host file as a data volume说可以将单个文件挂载到 Docker 容器中 v
  • 玩! 2.0 Scala - 访问全局对象

    我已经声明了一个在应用程序启动时实例化的对象 我想在控制器内访问它 这是插件的一部分 我希望能够使用该插件 但我似乎无法通过第一部分 找到MyWebsocketConnection目的 没有一个示例显示如何执行此操作 我不想注入控制器 因为
  • 如何修复 Prisma Client 自定义模型未定义的问题

    我生成了一个项目打字稿快速启动器 https www npmjs com package typescript express starter并选择了Prisma https www prisma io 作为 ORM 启动项目生成的基本 用
  • python:对我的复制变量的更改会影响原始变量[重复]

    这个问题在这里已经有答案了 我有一个列表 我创建了一个副本 以便在保留原始列表的同时进行一些操作 然而 当我设置copy list等于org list 它们会变成同样的东西 如果我改变copy list org list也发生变化 例如 o
  • Flutter 视频播放器无法在 ios 中播放

    我正在使用 video player 包在 flutter 中播放网络视频 在安卓上运行良好 但在ios上无法加载 颤振3 3 3 视频播放器 2 4 7 PS 服务器调用是https 问题发生在真实设备和响应头有接受范围 字节 Reque
  • 无法在 MySQL 5.7 中添加外键(引用表中缺少约束)

    我正在尝试运行外键添加查询 如下所示 外键检查设置为 0 两个表中的列完全相同 此外 两者都是主键 这里的解决方案都没有帮助解决这个问题 我在本地主机上 mysql gt alter table deliveryaddress gt add
  • 如何从 b 树中删除元素?

    我正在尝试了解 b 树 我能找到的每个来源似乎都忽略了有关如何从树中删除元素同时保留 b 树属性的讨论 有人可以解释该算法或向我指出可以解释其工作原理的资源吗 维基百科页面上有对此的解释 B 树 删除 http en wikipedia o
  • 在发生未处理的异常后,我可以将执行返回到失败的方法吗?

    我有一个 ASP NET 网站 其中包含一些 WCF 服务 我已连接到 Application Error 事件 因此可以记录任何未处理的异常 我真正想做的是将执行传递回被调用的方法 这样我就可以向客户端返回一些有意义的内容 而不是抛出Fa
  • 将按结果分组保存到单独的 CSV 文件中

    我有一个代码 用于使用 CSV 数据创建组并使用该组创建新文件 我读取了 csv 文件 然后使用它 问题是当我的函数工作并使用数据创建新文件时 新文件的名称是组的名称 我不希望这样 ID Inventory Domain Requests
  • Android从缩略图获取图像路径?

    我正在尝试为目前市场上的我的应用程序提供关键更新 我需要查询 MediaStore 中的缩略图 并将缩略图加载到 GridView 中 到目前为止一切顺利 现在我只需要根据我所拥有的内容 即缩略图的路径 获取用户外部存储上实际全尺寸图像的路
  • Oracle复制数据到另一个表

    在Oracle中 我将数据从备份复制到新表 但不起作用 正确的语法是什么 Thanks select CODE MESSAGE into EXCEPTION CODES CODE MESSAGE from Exception code tm
  • 为什么 sizeof(std::mutex)==40 (gcc,clang,icc)? [复制]

    这个问题在这里已经有答案了 而不是sizeof std atomic
  • 使用 SvelteKit 将图像放置在哪里

    我已经使用 Svelte 一段时间了 现在我已切换到 SvelteKit 这样我就可以添加多个页面 我想向我的网站添加一些图像 但我不知道将它们放在哪里 在 Svelte 中我会把它们放进去public images但没有public带有
  • 在 Android 上的 AAC 流中查找

    我从 HTTP 服务器获取 AAC 流并将其用作MediaPlayer在安卓中 它运行得很好 但是当我尝试执行时mediaPlayer seekTo int position 我收到以下错误大约一百万次 WARN AACDecoder 13
  • 处理 PowerShell 脚本中的命令提示符错误

    我正在尝试运行一些命令提示符命令 例如schtasks在 PowerShell 脚本中 我想知道如何处理 PowerShell 中命令引发的错误 I tried cmd exe c schtasks Query TN xx echo ERR
  • System.Messaging - 为什么 MessageQueue 不提供 Send 的异步版本

    有人知道为什么 System Messaging 不提供异步版本的 Send 方法来将 MSMQ 消息发送到队列 实际上有 Peek 和 Receive 方法的异步版本 通过可以转换为 C 5 异步等待方法的 Begin End 对 但令人