上一篇文章:庖丁解牛——深入解析委托和事件之后,以一题面试题来总结事件
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace CallChange { public class Call { static void Main(string[] args) { MessageMonitoring mm = new MessageMonitoring(); //添加监听事件的响应函数 mm.OnValueChange += new MMEventHandle((s, e) => { Console.WriteLine(e.Value); }); mm.Run(); } } //参数e public class MMEventArgs : EventArgs { public int Value { get; set; } } public delegate void MMEventHandle(object sender, MMEventArgs e); //信息监控的类,当Value改变的时候,出发事件OnValueChange public class MessageMonitoring { public event MMEventHandle OnValueChange; private int _value; public void Run() { Thread thread = new Thread(() => { while (true) { Thread.Sleep(1000); ++Value; } }); thread.Start(); } //属性改变 public int Value { get { return _value; } set { if (_value != value) { _value = value; if (OnValueChange != null) { OnValueChange(this, new MMEventArgs { Value = _value }); } } } } } }