using
System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication13
... {
/**//// <summary>
/// 事件演示程序
/// </summary>
class Program
...{
static void Main(string[] args)
...{
MyEvent myEvent = new MyEvent();
//注册事件(或者说订阅事件)
myEvent.wakeUp += new EventHandler(ShowMessage);
//在外部触发事件
myEvent.OnEvent();
}
/**//// <summary>
/// 事件处理程序(演示)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public static void ShowMessage(object sender,EventArgs e)
...{
Console.WriteLine("hello,it's time to wakeup!");
}
}
/**//// <summary>
/// 定义事件的类
/// </summary>
/// <remarks>
/// 在代理的基础上,事件实现了了另一个重要的机制:内部调用外部
/// 不能不佩服微软构思的巧妙,将代理稍一封装,就做成了功能强大的事件机制.
/// 事件最本质上的作用就是: 通知功能.能自动在某个事件触发时通知别的类或程序,
/// 执行一些代码.
/// </remarks>
public class MyEvent
...{
/**//// <summary>
/// 声明事件
/// </summary>
public event EventHandler wakeUp;
/**//// <summary>
/// 触发事件的函数,供外部调用,来触发该对象的事件
/// </summary>
public void OnEvent()
...{
RaiseMyEvent();
}
private void RaiseMyEvent()
...{
if ( wakeUp != null )
...{
//复制一份,避免多线程访问时产生NullReferenceException.在此仅供演示.
EventHandler bkWakeUP = wakeUp;
//调用外部的事件处理程序
bkWakeUP(this, new EventArgs());
}
}
}
}
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication13
... {
/**//// <summary>
/// 事件演示程序
/// </summary>
class Program
...{
static void Main(string[] args)
...{
MyEvent myEvent = new MyEvent();
//注册事件(或者说订阅事件)
myEvent.wakeUp += new EventHandler(ShowMessage);
//在外部触发事件
myEvent.OnEvent();
}
/**//// <summary>
/// 事件处理程序(演示)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public static void ShowMessage(object sender,EventArgs e)
...{
Console.WriteLine("hello,it's time to wakeup!");
}
}
/**//// <summary>
/// 定义事件的类
/// </summary>
/// <remarks>
/// 在代理的基础上,事件实现了了另一个重要的机制:内部调用外部
/// 不能不佩服微软构思的巧妙,将代理稍一封装,就做成了功能强大的事件机制.
/// 事件最本质上的作用就是: 通知功能.能自动在某个事件触发时通知别的类或程序,
/// 执行一些代码.
/// </remarks>
public class MyEvent
...{
/**//// <summary>
/// 声明事件
/// </summary>
public event EventHandler wakeUp;
/**//// <summary>
/// 触发事件的函数,供外部调用,来触发该对象的事件
/// </summary>
public void OnEvent()
...{
RaiseMyEvent();
}
private void RaiseMyEvent()
...{
if ( wakeUp != null )
...{
//复制一份,避免多线程访问时产生NullReferenceException.在此仅供演示.
EventHandler bkWakeUP = wakeUp;
//调用外部的事件处理程序
bkWakeUP(this, new EventArgs());
}
}
}
}