2013-01-08 45 views
1

我需要將我的程序周圍的消息發送到不同的類庫。所以我認爲這樣做的方式是讓所有不同庫訂閱的消息路由器類以及所有消息通過路由器。事件驅動的消息路由和隱藏實現

要發送消息的事件被髮送異步該消息路由器正在收聽上升。所以我已將消息傳遞給消息路由器。然後消息路由器異步地在接收機上引發另一個事件。

一)這是做這樣的事情的正確方法?

b)如何隱藏實現,以便該類只有MessageReceived(string message)SendMessage(string message)方法。

現在我可以創建一個抽象類,而是「隱藏」我會執行添加和移除我試圖避免的事件的執行。如果這是唯一的方法,我該如何實現以線程安全的方式添加/刪除?

回答

0

這有點像一個事件聚合的聲音。這個問題可能會幫助你 - Event Aggregator Implementation Sample/Best Practices

+0

要事甚至去這樣的事情的最好方法? – Cheetah

+0

這取決於你所說的事件。例如,[棱鏡](http://compositewpf.codeplex.com/)框架實現了一個[事件聚合](http://compositewpf.codeplex.com/wikipage?title=Event%20Aggregator)類,使得它很簡單的發佈和訂閱事件。這允許發送者和接收者之間的一定程度的解耦。這些事件不應該與標準的.Net事件混淆。 –

+0

每當我在OP中引用一個事件時,我的意思就是一個.NET事件對象。 – Cheetah