首页 > 代码库 > 一个事件的例子
一个事件的例子
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; } }
一个事件的例子
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。