.Net中使用事件和委托实现Observer模式(二)
来源:互联网 发布:windows安装snmp服务 编辑:程序博客网 时间:2024/05/16 00:36
上一部分简要说明了Observer模式的原理和.Net中的事件处理机制,接下来看看具体应用的实现。
一个简单的应用场景:网络连接状态监控,用户界面根据网络连接状态变化,显示是否连接图标,并且同时显示已连接/未连接的文字提示。
具体步骤如下:
1. 首先确定主体和观察者。
创建两个类分别为:NetworkStatus 和 FormMonitor,其中前者为主体,后者为观察者,这里我们直接使用.Net的窗体类继承。
2. 主体类中声明网络连接变化事件。
在NetworkStatus类中声明名为NetworkLinkedChanged事件,当然声明事件前,还需要声明该事件的委托类型NetworkLinkedChangedHandler。额外的,若需要传递一些状态信息,比如目前例子中,需要将是否连接的状态及连接提示文本传递给FormMonitor,则还需要定义特定的事件参数类NetworkLinkedEventArgs。然后需要在Linked属性中,检测到值发生变化时触发事件。
3.观察者类中声明一个符合NetworkLinkedChanged事件委托签名的方法,作为NetworkLinkedChanged事件的处理方法,并创建一个NetworkLinkedChangedHandler类型的委托实例。然后,在观察者类的构造函数中向主体的NetworkLinkedChanged事件注册委托实例,并在析构函数中注销该委托实例。
4.最后,在其他类中仅需直接修改NetworkStatus实例中的Linked属性即可。比如:可启动一个监控线程,定期的调用检查网络连接的方法,如果发现有变化,修改NetworkStatus实例的属性。若涉及后台线程调用事件处理方法中遇到需修改界面控件信息或状态时,应注意使用Form.BeginInvoke()等方法来避免跨线程调用时遇到的问题,有关此问题不在本文中讨论范围。
- .Net中使用事件和委托实现Observer模式(二)
- .Net中使用事件和委托实现Observer模式(一)
- C#中使用委托和事件实现观察者模式(observer pattern)
- C#中使用委托和事件实现观察者模式(observer pattern)
- c#委托和事件,Observer设计模式
- 委托的应用之二:使用多播委托编码Observer模式。以及事件的引入
- C#里的委托和事件实现Observer (转载)
- 不使用委托实现Observer模式
- C#-深度好文-委托/事件/.net中其编程规范/Observer模式
- 初识c#---委托,事件和观察者模式(Observer)设计模式
- Unity3D 中使用C# 委托和事件(之二)
- 浅谈Observer模式的实现.基于继承和基于事件/委托的两种方式
- c#委托和事件的简单使用,简单介绍observer设计模式
- 实现范例的Observer设计模式 事件 委托
- Observer 设计模式 了解委托与事件的使用
- C#中的委托和事件与Observer设计模式简介
- 委托和事件 及Observer设计模式简介
- C# 委托和事件,以及observer设计模式
- Linux GTK+ 透明 不规则 按钮 Glade3
- FServers
- 客户端访问Server
- ViewPort 转换矩阵的证明
- Javascript闭包
- .Net中使用事件和委托实现Observer模式(二)
- ASP.NET页面间值传递
- 增加网页访问量的脚本
- 行中包含多个售后,那么循环再处理.
- JCS学习(1)
- SQL SERVER 和EXCEL的数据导入导出
- 基于raphael 的图形变化(jQuery)
- Android SDK 使用技巧
- 用NUnit为.NET程序做测试---数据库测试之连接测试