P2PMessageQueue的外部特征与设计理念

P2PMessageQueue

成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、网站制作、阳信网络推广、微信小程序开发、阳信网络营销、阳信企业策划、阳信品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联为所有大学生创业者提供阳信建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com

确定 P2PMessageQueue 的公共接口的最佳方式是使用类。IntelliSense 将显示每个方法和每个参数的描述性帮助信息。以下几个段落将概述 P2PMessageQueue 接口。

图 1 显示该类的统一建模语言 (UML) 表示形式(以及它的两个依赖项:Message 类和 ReadWriteResult 枚举)。

图 1. 显示以下三种类型的类关系图: P2PmessageQueue 、 Message 和 ReadWriteResult 。

如果您偏爱描述性信息较少的 Object Browser 屏幕快照(但对于某些人来说可能更为熟悉),请参见图 2。

图 2. 显示这三种类型的 Visual Studio Object Browser 。

请注意尚未讨论的项以及 UML 关系图中未显示的项。

添加了 DataOnQueueChanged 事件。正如您将看到的那样,在没有该事件的情况下,P2PMessageQueue 类仍然可用,但是当只读队列非空并且只写队列未满时,该增强功能将通知客户端。在内部,将阻塞等待队列句柄的线程,并在句柄收到信号时激发该事件,这就避免了错误的发生。(请参见代码以获取详细信息。)请注意,该事件不 在 UI 线程上,因此您需要使用 Control.Invoke。如果查看代码,您还将看到在调用 Close 方法时,该线程是如何完全关闭的,这正是 .NET Compact Framework 版本 1.0 的线程所需要的。.NET Compact Framework 版本 1.0 中的 Thread 类不提供 IsBackground 属性或 Abort 方法;因此,必须确保应用程序提供必需的代码来完全终止该应用程序启动的所有线程。如果不提供该代码,则运行应用程序的进程很可能无法终止,因为运行中的 .NET Compact Framework 1.0 线程会保持该进程运行,即使主应用程序线程尝试退出也是如此。

此外,如果查看该实现会发现两个受保护的虚拟方法。

 
 
 
 
  1. # void StartEventThread()
  2. # Int32 GetBehaviourFlag()

如果不需要启动事件线程,则可以用一个空方法重写第一个方法。不启动事件线程是一个非常规方案(因为无法直接订阅该事件),但是的确存在该选项。第二个方法返回传入到 CreateMsgQueue 方法的标志 (MSGQUEUOPTIONS.dwFlags) 中使用的整型参数。MSGQUEUE_ALLOW_BROKEN 的默认设置很不错,但是如果要更改它(例如,更改为 0 或 MSGQUEUE_NOPRECOMMIT),则重写 GetBehaviorFlag 是最好的做法。

现在您应该已经十分了解 P2PMessageQueue类的外部特征,以及为什么以这种方式设计。

文章题目:P2PMessageQueue的外部特征与设计理念
URL链接:http://www.shufengxianlan.com/qtweb/news11/277711.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联