C# 委托与事件

c#事件 委托:

    1.类似观察者模式。
    2.当某个对象(类),执行某个动作时,之前委托的事情会自动完成。
    (如B,C订阅A的事件,当A执行某动作,B和C均会按照约定进行对应动作)



//使用步骤:

    1.定义 delegate委托类,event 事件
        
        //首领A:举杯委托
    public delegate void RaiseEventHandler(string hand);
        public class A
        {
        
        // 首领A:举杯事件      
        public event RaiseEventHandler RaiseEvent;
    
      
   // 2.绑定事件对应的函数
        // 举杯
        public void Raise(string hand)
        {
            Console.WriteLine("首领A{0}手举杯", hand);
            // 调用举杯事件,传入左或右手作为参数
            if (RaiseEvent!=null)
            {
                RaiseEvent(hand);
            }
        }


    

    


  //  3.编写约定


     public class B
        {
            A a;

            public B(A a){
            this.a = a;
            a.RaiseEvent += new RaiseEventHandler(a_RaiseEvent); // 订阅举杯事件
              
                    }
         
        // 首领举杯时的动作     
        void a_RaiseEvent(string hand)
        {
            if (hand.Equals("左"))
            {
                Attack();
            }
        }
      
        // 约定的攻击函数   
        public void Attack()
        {
            Console.WriteLine("部下B发起攻击,大喊:猛人张飞来也!");
        }
    }



   // 4.测试

    class Test{
        static void Main(string[] args){
            A a = new A(); // 定义首领A
 B a = new B(a)
            // 首领A左手举杯
            a.Raise("左");

            // 首领A右手举杯
            //a.Raise("右");
 
         
            // 由于B和C订阅了A的事件,所以无需任何代码,B和C均会按照约定进行动作。
                }
        }

 委托用来执行一个委托所指向的函数 
线程
是让你的程序非线性的运行,排除消息队列等概念,你可以简单理解为就是“同时”让软件做几个事情,就像你在睡觉的同时还在呼吸外加流口水做梦

原文:http://www.cnblogs.com/yinqixin/p/5056307.html

原文地址:https://www.cnblogs.com/j2ee-web-01/p/7160012.html