事件的订阅与处理

  public class CustomEventArgs :EventArgs
        {
            private string msg;

            public CustomEventArgs(string s)
            {
                msg = s;
            }
            public string Message
            {
                get { return msg; }
                set { msg = value; }
            }
        }

        public delegate void CustomEventHandler(object sender, CustomEventArgs ags);
        //class that publishes an event 
        class Publisher
        {
            //Declare the event using EventHandler
            public event EventHandler<CustomEventArgs> RaiseCustomEvent;

            public void DoSomething()
            {
                OnRaiseCustomEvent(new CustomEventArgs("Did something"));
            }

            protected virtual void OnRaiseCustomEvent(CustomEventArgs e)
            {
                EventHandler<CustomEventArgs> handler = RaiseCustomEvent;
                if (handler != null)
                {
                    e.Message += String.Format("at {0}", DateTime.Now.ToString());

                    handler(this, e);
                }
            }
        }
        
        //Class that subscribes to an event
        class Subcribe
        {
            public string ID;

            public Subcribe(string id, Publisher publish)
            {
                ID = id;
                publish.RaiseCustomEvent += HandleCustomEvent; //这地方可以调用多个事件处理程序

            }
            // Subscribe to the event using C# 2.0 syntax
            void HandleCustomEvent(object sender,CustomEventArgs e)
            {
                Console.WriteLine(ID + " received this message {0}", e.Message);
            }
        }

      //  public event CustomEventHandler customEventHandler; //声明事件,并将委托用作类型
        public static void Main()
        {

            Publisher pub = new Publisher();

            Subcribe sub1 = new Subcribe("sub1", pub);  //订阅 并且在触发的时候会调用相应的处理事件的函数
            Subcribe sub2 = new Subcribe("sub2", pub);

            //调用方法,里面有一个触发事件的虚方法(事件被复制)
            pub.DoSomething();

            Console.WriteLine("Press Enter to Close");
            Console.Read();
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值