1

我需要替代Dispatcher(.net 3.0)用於Windows服務(在.net 2.0中完成)。你能給我一些想法如何實現這樣的事情或指向我的一些鏈接?在.net 2.0上下文中使用Dispatcher類的替代方法

我知道調度員有一個SynchronizationContext落後,但我不知道如何將SynchronizationContext用於服務。

如果你認爲我應該堅持Dispatcher(.NET 3.0)...我怎麼能操縱它(OnServiceStop,​​)

編輯: 更多細節(見.. here

想法是,我想主持我的Windows服務的一些擴展/插件,這將通過方法ExecuteCommand(type, params)之間相互溝通。

如果從插件內部執行該方法,該方法還會向服務引發一個事件,以便接收結果。每個插件都可以擁有自己的線程,因此它可以調用此方法ExecuteCommand,因此我想收集所有調用並將其同步到一個線程(主服務線程)中,以便適當地返回結果。

這就是調度員進場的原因。但是,我希望在.net 2.0中有一些東西,或者您認爲Dispatcher在我的情況下很好嗎?

謝謝。

回答

2

Windows服務沒有類似Dispatcher(或Windows窗體中的消息循環)。如果你想從一個線程編組到另一個線程,「目標」線程將不得不運行它自己的消息循環。

如果你可以告訴我們更多關於你想要達到的目標,它會讓你更容易幫助你。

編輯:好的,它聽起來像基本上想要一個生產者/消費者隊列:一個線程等待,直到隊列中出現的東西,並處理它。生產者可以隨時添加到隊列中。

我在我的線程教程中有very simple implementation of a producer/consumer queue,但是可能會有更高級的實現。 (.NET 4使這很簡單,但是在.NET 2中更難。)如果你使用我的實現,那麼你需要考慮使它變得通用並添加終止條件。 Joe Albahari也有another implementation you should look at

+0

細節從這裏開始,但它是一個不同的問題:http://stackoverflow.com/questions/3447189/c-multiple-sources-different-threads-one-event-handler ...我會嘗試編輯我的問題 – Learner 2010-08-11 07:29:22

+0

嗨,喬恩,非常感謝!你有一篇很好的文章。因爲我的代碼已經達到了更高的複雜程度(用於插件通信)......我希望在表面上使用更輕量級的東西。這就是爲什麼我在尋找Dispatcher之類的東西。你知道嗎,這是爲Windows服務工作嗎?你知道我在服務啓動/停止期間如何操縱它嗎? – Learner 2010-08-11 08:00:35

+0

如何在.net 2.0(對於Windows服務)中從一個線程編碼到另一個線程? – Learner 2010-08-11 08:02:42

相關問題