首页 > 代码库 > How to: Raise and Consume Events
How to: Raise and Consume Events
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication1{ class Program { static void Main(string[] args) { Counter counter = new Counter(new Random().Next(10)); // 4. subscribe event counter.ThresholdReached += counter_ThresholdReached; Console.WriteLine("press ‘a‘ key to increase total"); while (Console.ReadKey(true).KeyChar == ‘a‘) { Console.WriteLine("adding one"); counter.Add(1); } } static void counter_ThresholdReached(object sender, ThresholdEventArgs e) { Console.WriteLine("Threshold " + e.ThresholdNum + " reached at time "+ e.TimeReached); } } public class Counter { int threshold; int total; public Counter(int thresholdVal) { threshold = thresholdVal; } public void Add(int x) { total += x; // 5. trigger event if (total > threshold) { ThresholdEventArgs args = new ThresholdEventArgs(); args.ThresholdNum = threshold; args.TimeReached = DateTime.Now; OnThresholdReached(this, args); } } // 1. define event public event EventHandler<ThresholdEventArgs> ThresholdReached; // 2. define OnXXX virtual method public virtual void OnThresholdReached(object sender, ThresholdEventArgs e) { EventHandler<ThresholdEventArgs> handler = ThresholdReached; if (handler != null) handler(this, e); } } // 3. define event arguments public class ThresholdEventArgs : EventArgs { public int ThresholdNum { get; set; } public DateTime TimeReached { get; set; } }}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。