How to: Raise and Consume Events_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > How to: Raise and Consume Events

How to: Raise and Consume Events

 2014/8/11 23:34:56  PengpengSong  程序员俱乐部  我要评论(0)
  • 摘要:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceConsoleApplication1{classProgram{staticvoidMain(string[]args){Countercounter=newCounter(newRandom().Next(10));//4
  • 标签:
class="code">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; }
    }
}
上一篇: 《Prism 5.0源码走读》 设计模式 下一篇: 没有下一篇了!
  • 相关文章
发表评论
用户名: 匿名