只有至少有一个订阅者,.NET按钮才会触发事件吗?

时间:2012-06-22 00:00:10

标签: c# .net button

我正在设计一个客户端测试脚本生成应用程序。应用程序查找提供程序中的每个自动化元素,并将监听器注册到提供程序中的每个自动化元素。每当用户与提供者的UI交互时,自动化元素就会触发我的应用程序中记录的事件。 现在,主窗体上的按钮触发事件,但子窗体中的按钮不会触发事件。我意识到子窗体按钮在提供者的代码中没有订阅者。所以我的问题是,如果至少有一个订阅者,.NET按钮只会触发事件吗?

1 个答案:

答案 0 :(得分:3)

这有点像问“如果一棵树落在森林里,没有人听到它,它会发出声音吗?”如果你去那里找出来, 有人可以听到它。

当处理程序附加到.NET事件时,会创建一个集合对象并添加一个委托。发生事件时,框架会检查此集合是否存在。如果存在,则枚举和调用其元素,否则事件调度会提前终止。

“[D] o .NET按钮仅在至少有一个订户时触发事件?”

如果“火灾事件”是指“调用代理人调用事件处理程序”,那么显然只有当代理时才会发生这种情况。显然,如果没有,那么就无法调用它们。从“框架看起来代表是否在没有任何代理时调用”的意义上来说,事件在没有处理程序的情况下发生