代码之家  ›  专栏  ›  技术社区  ›  user472875

C#让事件等待

  •  1
  • user472875  · 技术社区  · 14 年前

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

    颗粒物

    1 回复  |  直到 14 年前
        1
  •  3
  •   LBushkin    14 年前

    C#中没有内置机制来排队事件并将其作为附加的处理程序进行分派。 当一些有趣的活动发生时,事件会同步引发…““等待”处理程序将需要阻止进程。

    您可以通过提供 custom implementation of the event member 您需要一个单独的数据结构来缓存有关以前“引发”事件的信息,并在附加处理程序时将其排队。

    上述方案的问题在于,尽管它可能非常不寻常,而且有点混乱。大多数开发人员不希望事件以这种方式引发。如果大量事件在没有附加处理程序的情况下发生,那么最终可能会使用大量内存来存储永远不会被分派的事件,这一事实也很复杂。就我个人而言,我一般建议避免这样的设计。