EventHandler<TEventArgs>委托

 1 using System;
 2 
 3 namespace ConsoleApplication1
 4 {
 5     class Program
 6     {
 7         static void Main(string[] args)
 8         {
 9             Counter c = new Counter(new Random().Next(10));
10             c.ThresholdReached += c_ThresholdReached;
11 
12             Console.WriteLine("press 'a' key to increase total");
13             while (Console.ReadKey(true).KeyChar == 'a')
14             {
15                 Console.WriteLine("adding one");
16                 c.Add(1);
17             }
18         }
19 
20         static void c_ThresholdReached(object sender, ThresholdReachedEventArgs e)
21         {
22             Console.WriteLine("The threshold of {0} was reached at {1}.", e.Threshold,  e.TimeReached);
23             Environment.Exit(0);
24         }
25     }
26 
27     class Counter
28     {
29         private int threshold;
30         private int total;
31 
32         public Counter(int passedThreshold)
33         {
34             threshold = passedThreshold;
35         }
36 
37         public void Add(int x)
38         {
39             total += x;
40             if (total >= threshold)
41             {
42                 ThresholdReachedEventArgs args = new ThresholdReachedEventArgs();
43                 args.Threshold = threshold;
44                 args.TimeReached = DateTime.Now;
45                 OnThresholdReached(args);
46             }
47         }
48 
49         protected virtual void OnThresholdReached(ThresholdReachedEventArgs e)
50         {
51             EventHandler<ThresholdReachedEventArgs> handler = ThresholdReached;
52             if (handler != null)
53             {
54                 handler(this, e);
55             }
56         }
57 
58         public event EventHandler<ThresholdReachedEventArgs> ThresholdReached;
59     }
60 
61     public class ThresholdReachedEventArgs : EventArgs
62     {
63         public int Threshold { get; set; }
64         public DateTime TimeReached { get; set; }
65     }
66 }
原文地址:https://www.cnblogs.com/ZeedLee/p/10571505.html