通过一个警察抓小偷的实例去理解:
1、关联事件:警察关注偷窃事件
2、开始触发:小偷开始偷东西
3、事件触发后: 警察知道小偷开始偷东西,
4、触发事件之后的业务:警察开始抓小偷
事件分为两部分:
1、发布者和订阅者,上例中的小偷就是发布者,警察就是订阅者。
以下通过代码解释上述事例:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Event
{
/// <summary>
/// 发布者
/// </summary>
//声明委托
public delegate void sendMessageHandler(string msg);
public class Auther
{
//事件
//声明事件
public event sendMessageHandler sendMessage;
//3、触发事件后的业务
public virtual string ClickEvent(string msg)
{
if (msg == "小偷开始偷东西")
{
sendMessage.Invoke(msg);
msg =msg+ ",警察开始抓小偷,抓到了";
return msg;
}
return msg;
}
//2、开始触发
public string StartClick(string msg)
{
Console.WriteLine("现在开始触发事件");
var res= ClickEvent(msg);
return res;
}
}
/// <summary>
/// 接收者
/// </summary>
public class Reciver
{
//1、关联事件
public void Recive(Auther pro)
{
pro.sendMessage += Event_Pro;
}
//3、事件触发
public void Event_Pro(string msg)
{
var result = msg;
}
}
}
public class main
{
static void Main(string[] args)
{
Auther sendEvent = new Auther();
Reciver subscriber = new Reciver();
// 关注事件--偷窃事件
subscriber.Recive(sendEvent);
// 开始触发
var res= sendEvent.StartClick("小偷开始偷东西");
Console.WriteLine(res);
Console.ReadLine();
}
}