【发布时间】:2014-02-21 22:16:11
【问题描述】:
我有一个可以快速连续发生的事件的事件处理程序。在某些情况下,当事件再次触发时(毫秒内),处理程序仍将执行。
有没有办法让这些处理程序...串行?那么,在事件调用 #1 完成之前,事件调用 #2 无法启动?
如果这是一个糟糕的想法,为什么?这是一个在后台无人值守运行的批处理过程,因此我不太担心一个调用阻塞另一个调用可能会出现性能问题。
【问题讨论】:
-
请注意,您需要有喘息的空间,否则如果要堆叠它们,最终可能会耗尽资源。
-
事件处理程序是否在多个线程上运行?如果不是,事件处理程序是否在执行某种创建重入的 DoEvents 调用?如果不是,那么这怎么可能?事件处理程序是通过抽取消息队列来触发的;如果线程忙于运行事件处理程序,那么根据定义它不忙于抽队列!