您现在的位置是:首页 >

同步消息和异步消息 编程高手 DotNet异步消息处理方法

火烧 2022-07-06 22:20:52 1054
编程高手 DotNet异步消息处理方法 如果想检索消息但不阻碍应用程序的处理 可异步检索消息 在异步消息处理中 启动任务的方法被立即返回而不等待结果 应用程序可以在任务完成过程中继续它原来的工作 任务

编程高手 DotNet异步消息处理方法  

同步消息和异步消息 编程高手 DotNet异步消息处理方法
如果想检索消息但不阻碍应用程序的处理 可异步检索消息 在异步消息处理中 启动任务的方法被立即返回而不等待结果 应用程序可以在任务完成过程中继续它原来的工作 任务完成时 服务器可以通知应用程序消息已被成功处理      有两种类型的异步消息处理操作 异步接收消息和异步查看消息 异步检索消息时 使用 BeginReceive 方法和 EndReceive 方法标记操作的开始和结束 所发生的操作如下所示   当队列上的消息变得可用时 或者如果要查看或接收的消息已经存在 BeginReceive 方法将立即返回 并引发名为 ReceiveCompleted 的事件   ReceiveCompleted 事件返回一个 IAsyncResult 类型的对象 该对象包含有关异步操作的信息   接收到完成的事件后 调用 EndReceive 方法完成操作 在最后的调用中 可以访问消息或通过访问 ReceiveCompletedEventArgs 类检索该消息   在操作的整个生存期内都可以访问 IAsyncResult 对象 但通常在调用 EndReceive 后才会使用该对象 但是 如果启动多个异步操作 则可将这些操作的 IAsyncResult 值放在数组中 并指定是等待所有操作完成还是任一操作完成 在这种情况下 使用 IAsyncResult 对象的 AsyncWaitHandle 属性标识已完成的操作      与 Receive 一样 Peek 使用两个名为 BeginPeek 和 EndPeek 的方法来标记异步操作的开始和结束 当消息可用时 BeginPeek 立即返回 并引发名为 PeekCompleted 的事件 与 ReceiveCompleted 一样 该事件返回一个 IAsyncResult 对象 可以通过使用该对象来获取此操作的有关信息      另外 异步接收和查看操作均可使用超时时限来指定等待多长时间使消息变得可用 要完成此操作 可以使用任一方法的重载形式来传递一个 TimeSpan 对象 指示等待的时间 如果超时时间到期 但 IAsyncResult 对象上的 IsCompleted 属性设置为 false 指示有消息尚未处理时 将引发 ReceiveCompleted 或 PeekCompleted 事件 lishixinzhi/Article/program/net/201311/12628  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码