之前我推倒重来...如何处理顺序调用事件处理程序?
这只是一个例为说明问题 - 让我们说你有一些数据的收集和前端这显示集合的一个项目后端。
在后端我有ItemIndex - 每当它发生变化,它就会触发OnScroll事件。
我也有AddNewItem方法,它在集合的末尾添加新项目。该方法的结尾调用OnNewItem事件处理程序。
这里是catch-in AddNewItem我必须改变ItemIndex,它会触发OnScroll。 (!)OnScroll和OnNewItem的两个接收者之一,如果前端显示选定的项目。
在这种情况下,它被称为两次(不好)。一种解决方案是改变item_index而不是ItemIndex,并且这样防止OnScroll,但我不喜欢它,因为ItemIndex不再作为黑盒子。
是否有任何已建立的顺序点火事件模式,并且只发送“重要”事件(这里是:OnNewItem重写OnScroll)?我的想法是定义一个事件范围,然后不是直接发送事件,而是将它们注册为发送,并在范围结束时对它们进行排序并发送所需的范围。
一般 - 问题 - 我应该如何处理潜在的顺序事件触发。使用内部消息来避免发送冗余事件?忽略开销? ...?
就像那个问题一样。不知道这个我自己。我的解决方案始终是直接设置字段,或者有一些不会触发事件的ItemIndexInternal。 – 2011-05-22 16:21:35
也是我的,但是如果我的程序变得越来越大,这种方法将会成为问题。 – greenoldman 2011-05-22 16:46:58