事件(Event) 基本上说是一个用户操作,如按键、点击、鼠标移动等等,或者是一些提示信息,如系统生成的通知。应用程序需要在事件发生时响应事件。例如,中断。
C# 中使用事件机制实现线程间的通信。
定义的代码:
class Event
{
// 定义一个委托,输入返回参数都可以自定义
public delegate void ShowMessage_Delegate(string message);
public event ShowMessage_Delegate ShowMessage_Event_Fun;
// 事件只能在内部调用,需要包装一个外部接口
public void OnShowMessage(string message)
{
if (ShowMessage_Event_Fun != null)
{
ShowMessage_Event_Fun(message); /* 事件被触发 */
}
else
{
Console.WriteLine("event not fire");
}
}
// 用于绑定委托的函数,输入返回参数必须和委托移一致
public void ShowMessage1(string message)
{
Console.WriteLine("M1:" + message);
}
// 用于绑定委托的函数2
public void ShowMessage2(string message)
{
Console.WriteLine("M2:" + message);
}
}
调用的代码:
static void EventNSTest()
{
EventNS.Event dc = new EventNS.Event();
// 事件可以随意绑定相同格式的函数,但只能添加或减少(+=,-=);
dc.ShowMessage_Event_Fun += dc.ShowMessage1;
dc.OnShowMessage("Run 1");
Console.WriteLine("");
// 添加一个函数
dc.ShowMessage_Event_Fun += dc.ShowMessage2;
// 这时会同时调用两个回调函数
dc.OnShowMessage("Run 2");
Console.WriteLine("");
// 减少一个
dc.ShowMessage_Event_Fun -= dc.ShowMessage2;
dc.OnShowMessage("Run 3");
Console.WriteLine("");
// 再减少一个,这时就清空了
dc.ShowMessage_Event_Fun -= dc.ShowMessage1;
dc.OnShowMessage("Run 4");
Console.WriteLine("");
}
运行的结果: