关于EventHandlerList的用法简介
来源:互联网 发布:vue.js事件对象event 编辑:程序博客网 时间:2024/05/17 08:15
EventHandlerList作为事件处理的替补方案
如果你发现你的服务组件对外需要提供很多的事件,而这些事件一般情况下你认为很少有程序拦截。使用EventHandlerList提供的功能将很适合你,如果使用.NET提供的默认事件机制,你可能在创建实例时消耗较多 的内存,而使用EventHandlerList挂接事件将节约内存。下面的代码演示了如何使用此功能。
private EventHandlerList _events = null; /// <summary> /// 供轻量级的事件对象 /// </summary> protected new EventHandlerList Events { get { if (_events == null) { lock (this) { if (_events == null) { _events = new EventHandlerList(); } } } return _events; } } //事件key值 private static readonly object _startintEventKey = new object(); /// <summary> /// Starting事件 /// </summary> public event EventHandler Starting { add { this.Events.AddHandler(_startintEventKey, value); } remove { this.Events.RemoveHandler(_startintEventKey, value); } } /// <summary> /// 引发事件Starting /// </summary> /// <param name="e"></param> protected virtual void OnStarting(EventArgs e) { this.RaiseEventByEventKey(_startintEventKey, e); } protected void RaiseEventByEventKey(object eventKey, EventArgs e){ if (eventKey == null) throw new ArgumentNullException("eventKey"); if (_events != null) { EventHandler handler = (EventHandler)_events[eventKey]; if (handler != null) handler(this, e); } } public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { this.Starting += new EventHandler(Form1_Starting); this.OnStarting(EventArgs.Empty); } void Form1_Starting(object sender, EventArgs e) { MessageBox.Show("test"); }
阅读全文
0 0
- 关于EventHandlerList的用法简介
- CFileDialog的用法简介!!
- CFileDialog的用法简介!!
- CFileDialog的用法简介
- CFileDialog的用法简介
- IsKindOf的用法简介
- CFileDialog的用法简介
- synchronized的用法简介
- grub的用法简介
- IEnurable的用法简介
- mysqladmin的用法简介
- JFreeChart的用法简介
- CFileDialog的用法简介
- CFileDialog的用法简介
- CFileDialog的用法简介 .
- ibatis的用法简介
- CFileDialog的用法简介
- CFileDialog的用法简介
- PHP冒泡排序法 | 黄乔国PHP
- 25张图让你读懂神经网络架构
- 关于window.showModalDialog()返回值的学习
- [Unity&特效]使用Projector投影仪组件在哪里下载
- Beautiful numbers
- 关于EventHandlerList的用法简介
- 《高效能人士的七个习惯》书籍概要
- 小白通过JDBC在AndroidStudio一步步来访问MYSQL数据库
- git远程仓库的删除和重
- 关于各类复杂的数组声明,指针数组,数组指针等的理解
- 【高性能MySQL】查询优化
- Satisfactory Pairs HackerRank
- 【JVM】自定义类加载器
- 算法导论思考题:14-1 最大重叠点 ---O(logn)插入,删除,查找 + O(1)最大重叠点寻找