C#让事件等待

时间:2010-10-26 02:05:11

标签: c# event-handling

我正在研究一些事件驱动的代码。在我的系统的一个组件中,有时会出现一个事件,我目前没有处理程序。有没有办法让事件“等待”,直到处理程序可用为止?

谢谢,

PM

1 个答案:

答案 0 :(得分:3)

C#中没有用于排队事件的内置机制,并且当处理程序被附加时调度它们。当一些有趣的活动发生时,事件会同步引发...“等待”处理程序需要阻止的过程。

您可以通过在班级中提供custom implementation of the event member来实现自己的事件排队。您需要一个单独的数据结构来缓存有关以前“已提升”事件的信息并将其排队等待处理程序附加。

上述方案的问题在于,虽然它可能非常不寻常并且有点令人困惑。大多数开发人员不希望以这种方式提出事件。如果在没有附加处理程序的情况下发生大量事件,您最终可能会使用大量内存来存储永远不会被调度的事件,这也很复杂。就个人而言,我通常建议避免这样的设计。