.Net中的事件以及与时间“维度”的关系

时间:2011-06-10 08:07:09

标签: .net events delegates

我在很多书中读到,事件是保留在某个时间点执行的功能,不需要“马上”。我不明白这一点,我认为这是错误的。它必须与通常的事件源是像鼠标或键盘这样的I / O设备这一事实有关。但事件并非如此。

事件是“简单的”类似属性的多播代理(来自优秀的双向飞碟书的属性概念)。委托是一个“函数指针”,一种“注入”方法作为参数的方法,最终帮助我们“反转”两个对象的耦合,允许我们不引用“被调用”对象(从而实现观察者模式)。至少这是我使用事件的方式。

以上是错的吗? (对不起任何糟糕的书面英语)

2 个答案:

答案 0 :(得分:1)

第一个声明是在 UI和交互 中使用事件,但第二个是可以在任何地方使用的更通用的描述,可以认为是 < em>发布订阅模式 描述。

答案 1 :(得分:1)

除了Jani的答案之外,我认为您不能依赖执行事件处理程序的时间点,因为您不知道总共有多少事件处理程序附加到特定事件。如果您的事件处理程序是长行委托中的最后一个,并且前面的委托需要花费大量时间来完成处理程序,那么将无法快速收到事件。

事件的关键在于,您无法确切知道在事件被引发后何时调用您的处理程序。