发布时间:2024-10-27 09:01
事件(Event)说是一个用户操作,如事件发生、点击、移动等,或者是一些提示信息,如系统生成的通知。应用程序时响应事件。例如,需要中断。
C# 中使用事件处理线程间的通信。
事件在类中声明且生成,且通过使用同一个类或其他类中的委托与事件处理程序关联。包含用于发布事件的类。这被称为事件器(发布者)类。其他接受该事件的类被称为订阅者(订阅者)类。事件使用发布-订阅(发布者-订阅者)模型。
发布器(publisher)是一个包含事件和委托定义的对象。事件和委托之间的联系也定义在这个对象中。发布器(publisher)类的对象调用这个事件,并通知其他的对象。
订阅器(订阅者)是一个接受事件并提供事件处理程序的对象。在发布器(发布者)类中的委托订阅器(订阅者)类中的方法(事件处理程序)。以上说明来自于菜鸟教程。
本例是简单说明一个事件Demo,从事件的产生到发布。
Trelease是发布事件类,负责事件的定义和对应委托的定义;
Tsubscribe是订阅事件类,负责事件具体处理过程的定义。
namespace 事件Demo
{
//发布事件类
using System.Windows;
namespace 事件Demo
{
public class Tsubscribe
{
public void DoChange(string AText)
{
MessageBox.Show(AText);
}
}
}
//订阅事件类
public class Trelease
{
private string name;
public string Name
{
get { return name; }
set
{
if (value!= Name)
{
name = value;
Onchange(value);
}
}
}
public delegate void MyDelegate(string AText);
public event MyDelegate? Onchange;
}
}
private void BtnTest_Click(object sender, RoutedEventArgs e)
{
Trelease trelease = new Trelease(); //发布器
Tsubscribe tsubscribe = new Tsubscribe(); //订阅器
trelease.Onchange += new Trelease.MyDelegate(tsubscribe.DoChange); //注册事件
trelease.Name = TextBoxInput.Text;
}