zoukankan      html  css  js  c++  java
  • 事件

    把客户代码关联到类通知的办法——使用事件

    using System;

    // 向前声明
    public delegate void EventHandler(string strText);

    class EventSource
    {
        public event EventHandler TextOut;

        public void TriggerEvent()
        {
            if (null != TextOut) TextOut("Event triggered");
        }
    }

    class TestApp
    {
        public static void Main()
        {
            EventSource evsrc = new EventSource();

            evsrc.TextOut += new EventHandler(CatchEvent);
            evsrc.TriggerEvent();

            evsrc.TextOut -= new EventHandler(CatchEvent);
            evsrc.TriggerEvent();

            TestApp theApp = new TestApp();
            evsrc.TextOut += new EventHandler(theApp.InstanceCatch);
            evsrc.TriggerEvent();
        }

        public static void CatchEvent(string strText)
        {
            Console.WriteLine(strText);
        }

        public void InstanceCatch(string strText)
        {
            Console.WriteLine("Instance " + strText);
        }
    }

    EventSource 被实例化,而静态方法CatchEvent被预关联上了 TextOut事件:
    evsrc.TextOut += new EventHandler(CatchEvent);
    从现在起,当事件被触发时,该方法被调用。如果对事件不再感兴趣,简单地取消关联:
    evsrc.TextOut -= new EventHandler(CatchEvent);

  • 相关阅读:
    异步与回调的设计哲学
    CTF之PHP黑魔法总结
    图片隐写分离
    phpMyadmin各版本漏洞
    python 多线程
    order by name 注入
    Python lambda
    Python os.popen() 方法
    你和大牛差了啥
    Error: failure: repodata/repomd.xml from fedora: [Errno 256] No more mirrors to try.
  • 原文地址:https://www.cnblogs.com/netfork/p/3721.html
Copyright © 2011-2022 走看看