一个事件的例子
Posted haohaizi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个事件的例子相关的知识,希望对你有一定的参考价值。
class Program { static void Main(string[] args) { MailManager mail = new MailManager(); new Fax(mail); mail.SimulateNewMail("123", "234", "456"); Console.ReadKey(); } } internal class NewMailEventArgs : EventArgs { private readonly string m_from, m_to, m_subject; public NewMailEventArgs(string from,string to,string subject) { this.m_to = to; this.m_from = from; this.m_subject = subject; } public string Form { get { return m_from; } } public string To { get { return m_to; } } public string Subject { get { return m_subject; } } } internal class MailManager { public event EventHandler<NewMailEventArgs> NewMail; protected virtual void OnNewMail(NewMailEventArgs e) { EventHandler<NewMailEventArgs> temp = Interlocked.CompareExchange(ref NewMail, null, null); if (temp!=null) { temp(this,e); } } public void SimulateNewMail(string from,string to,string subject) { NewMailEventArgs e = new NewMailEventArgs(from,to,subject); OnNewMail(e); } } internal sealed class Fax { public Fax(MailManager mm) { mm.NewMail += FaxMsg; } private void FaxMsg(object sender, NewMailEventArgs e) { Console.WriteLine("Faxing Mail message:"); Console.WriteLine("to={0},from={1},subject={2}",e.To,e.Form,e.Subject); } public void Unregister(MailManager mm) { mm.NewMail -= FaxMsg; } }
以上是关于一个事件的例子的主要内容,如果未能解决你的问题,请参考以下文章
Android 事件分发事件分发源码分析 ( Activity 中各层级的事件传递 | Activity -> PhoneWindow -> DecorView -> ViewGroup )(代码片段