C#多线程委托和事件

时间:2012-05-23 23:56:14

标签: c# events delegates

我在理解从哪里开始时遇到了一些麻烦 - 我开发了一个可以访问SQL Express数据库并通过DataSet操作它的表单。我还开发了一个类,它通过专有协议监听多线程TCP服务器以获取来自其他客户端的更新。

我需要做的是获取表单的更新,该表单包含要更新的数据集实例。

我已经检查了一些事件和委托帮助,this guide一开始看起来很方便,但是很多这些例子都有同样的问题 - 他们并不擅长准确表达发生了什么,并最终在两个类中使用类似的变量。

哪个类是“订阅者”,哪个是“发布者”?我真的厌恶表单编程,并且完全基于命令行来完成这项工作,但它适用于一群计算机文盲的人,他们可能因为必须使用提示而遭受创伤。

1 个答案:

答案 0 :(得分:0)

发布者是其类声明事件的对象。例如,DataTable发布RowChanged事件。

处理事件的对象是订阅者。例如,具有_table字段的类可以订阅RowChanged事件(假设处理方法当然存在):

this._table.RowChanged += this.HandleRowChanged;

有时,课程可以订阅自己的活动。一个例子是Windows窗体的Load事件。这使用了比必要更多的开销,并且一些框架提供了虚方法,允许子类扩展基类的功能而无需创建事件委托。这就是Form的OnLoad方法是虚拟的原因。