您的位置:首页 > 编程语言 > C#

C# 事件

2015-11-16 18:45 393 查看
/// <summary>
/// 事件数据
/// </summary>
internal sealed class NewMailEventArgs : EventArgs
{
private readonly String m_from, m_to, m_subject;

public NewMailEventArgs(String from, String to, String subject)
{
m_from = from; m_to = to; m_subject = subject;
}
/// <summary>
/// 发件人
/// </summary>
public String From { get { return m_from; } }
/// <summary>
/// 收件人
/// </summary>
public String To { get { return m_to; } }
/// <summary>
/// 标题
/// </summary>
public String Subject { get { return m_subject; } }
}
internal class MailManager
{
private EventHandler<NewMailEventArgs> m_NewMail;
// 事件属性
public event EventHandler<NewMailEventArgs> NewMail
{
add
{
m_NewMail += value;
}
remove
{

m_NewMail -= value;
}
}
protected virtual void OnNewMail(NewMailEventArgs e)
{
//EventHandler<NewMailEventArgs> temp =
// Interlocked.CompareExchange(ref m_NewMail, null, null);
//if (temp != null) temp(this, e);

if (m_NewMail != null)
{
m_NewMail.Invoke(this,e);
}
}
/// <summary>
/// 模拟新邮件
/// </summary>
/// <param name="from"></param>
/// <param name="to"></param>
/// <param name="subject"></param>
public void SimulateNewMail(String from, String to, String subject)
{
NewMailEventArgs e = new NewMailEventArgs(from, to, subject);
OnNewMail(e);
}
}
/// <summary>
/// 传真
/// </summary>
internal sealed class Fax
{
public Fax(MailManager mm)
{
mm.NewMail += FaxMsg;
}
private void FaxMsg(Object sender, NewMailEventArgs e)
{
Console.WriteLine("传真邮件信息:");
Console.WriteLine("   From={0}, To={1}, Subject={2}",
e.From, e.To, e.Subject);
}
public void Unregister(MailManager mm)
{
mm.NewMail -= FaxMsg;
}
}
internal sealed class Pager
{
public Pager(MailManager mm)
{
mm.NewMail += SendMsgToPager;
}
private void SendMsgToPager(Object sender, NewMailEventArgs e)
{
Console.WriteLine("发送邮件到寻呼机:");
Console.WriteLine("   From={0}, To={1}, Subject={2}", e.From, e.To, e.Subject);
}
public void Unregister(MailManager mm)
{
mm.NewMail -= SendMsgToPager;
}
}


客户端:

static void Main(string[] args)
{
// Construct a MailManager object
MailManager mm = new MailManager();

// Construct a Fax object passing it the MailManager object
Fax fax = new Fax(mm);

// Construct a Pager object passing it the MailManager object
Pager pager = new Pager(mm);

// Simulate an incoming mail message
mm.SimulateNewMail("Jeffrey", "Kristin", "I Love You!");

// Force the Fax object to unregister itself with the MailManager
fax.Unregister(mm);

// Simulate an incoming mail message
mm.SimulateNewMail("Jeffrey", "Mom & Dad", "Happy Birthday.");

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: