2014-09-25 92 views
0

我面臨一個問題,我需要停止事件聚合器(Prism框架)的事件傳播。 有什麼辦法可以做到嗎?事件聚集器:如何阻止事件進一步傳播?

假設我有10個事件處理程序。現在,我正在檢查第二個事件處理程序中的一些條件,並且如果該條件評估爲true,我想通過其餘8個事件處理程序停止對該事件的進一步處理。

+0

它是否僅僅爲EventArgs添加'.Handled'布爾值,並讓所有處理程序在處理之前檢查該標誌?我以爲這就是我過去做過類似的事情,但我不記得了。 – Rachel 2014-09-25 15:13:46

回答

3

這不是真正的觀察者模式的工作方式。 EventAggregator非常適合解耦類 - 對消息感興趣的各種東西可以用subscribe來接收,而任何想要的東西可以用publish消息發出。所有人不必知道(a)誰在發送和(b)誰在接收。

您無法控制消息的接收順序,或者在發送消息後取消它。

可能能夠使用EventAggregator的Subscription Filtering功能,但它不是我以前必須做的事情。

+0

我通過這種方式知道我可以過濾事件。但我的問題是,我想根據在某個事件處理程序中遇到的某些條件來過濾事件。謝謝您的幫助。 – 2014-09-25 18:01:26

+0

如果只有一個用戶滿足過濾條件,那麼您應該能夠使用該機制 - 無需「取消」其他用戶的事件處理。 – Mashton 2014-09-26 15:34:47