[英]C# events and class hierachy
我有以下课程
子班:
public class ChildClass
{
...
private void EventHandler(...);
...
}
家长班:
public class ParentClass
{
...
ChildClass child;
...
private void EventHandler(...);
...
}
两者都具有针对同一事件的事件处理程序。
问题是这些处理程序将以什么顺序调用?
委托的订阅顺序,尽管由于规范中的任何地方(据我所知)都没有适当地指出这是预期的行为,但是,依靠这种顺序可能是愚蠢的,因为每个实现可能会改变。
它将被注册为int。
尽管MSDN文档明确指出多播委托以其订阅的顺序调用委托,但假定订阅顺序是确定性的,即您处于单线程环境中。
如果不是这种情况,则最好定义两个事件:BeforeEventOccurs事件和AfterEventOccurs事件。 即使在多线程环境中,这也可以使您对顺序进行确定性控制。
根据这个问题,事件处理程序按照订阅事件的顺序被调用。
来自代表
委托用于将方法作为参数传递给其他方法。 事件处理程序只不过是通过委托调用的方法。 您创建一个自定义方法,并且在发生特定事件时,诸如Windows控件之类的类可以调用您的方法。
从如何:合并代理(多播代理)页面;
委托对象的一个有用属性是,可以使用+运算符将多个对象分配给一个委托实例。 多播委托包含分配的委托的列表。 调用多播委托时,它将按顺序调用列表中的委托。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.