Exemplo n.º 1
0
 void HandleCustomEvent(object sender, CustomEvent e)
 {
     if (ID == "sub1")
     {
         live -= 1;
     }
     if (ID == "sub2")
     {
         live += 1;
     }
 }
Exemplo n.º 2
0
        //使用虚方法,让子类可以重写
        protected virtual void OnRaiseCustomEvent(CustomEvent e)
        {
            // 定义一个局部变量,已防止最后一个订阅者刚好在检查null后取消订阅
            EventHandler <CustomEvent> handler = RaiseCustomEvent;

            if (handler != null)
            {
                e.Message += String.Format("at {0}", DateTime.Now.ToString());

                // 这是最重要的一句。
                // 此时执行的  handler已经是一个多播委托(如果有多个订阅者或观察者注册)。
                // 既然是多播委托,就可以依次调用各个 回调函数 (既然是回调函数,实际的执行就由订阅者类决定)。
                //这里面传入一个this, 就代表 事件源(或发布者 或 被观察者 都一个意思)
                handler(this, e);
            }
        }