2011-02-22 88 views
0

我有以下問題。有一個窗口服務中承載這樣一個WCF服務:堅持在Windows服務中託管的WCF服務? (即僅實例化一次)

sHost = new ServiceHost(typeof(DataService)); 
_thread = new Thread(new ThreadStart(sHost.Open)); 
_thread.Start(); 

DataService的地方是一個WCF服務合同的解決方案。

WCF服務下面的幾層是一個獨立程序集中的緩存。但是,每次創建WCF服務的新連接/代理時,都會創建一個新的服務實例。這會導致在DAL中創建一個新的緩存實例。所以我想要做的就是擁有WCF服務,因此所有的類只能實例化一次(由於多重性的要求,有一些例外)。因此,應該實例化WCF服務並監聽新連接,而不是每次創建新連接時都要創建DataService實例。

我希望這是有道理的。我該怎麼做呢?

非常感謝, 府谷

回答

2

實例化的DataService自己和實例傳遞給ServiceHost的構造函數:

sHost = new ServiceHost(new DataService()); 
+0

我得到的「System.NullReferenceException:未將對象引用設置到對象的實例」這樣做時出錯。但是我明天將會看到它(它很難從WindowsService運行)。 – Fugu 2011-02-22 17:38:54

1

我覺得alexdej答案是正確的,但沒有看到你的代碼不能,爲什麼你發表評論一個空引用異常。

但是,我可以指出你看這些視頻',我僅在兩天前完成了這些視頻以幫助學習WCF,我相信他們會回答你的問題。

自託管WCF - http://channel9.msdn.com/shows/Endpoint/Endpoint-Screencasts-Self-hosting-WCF-Services/

託管WCF作爲Windows服務 - http://channel9.msdn.com/shows/Endpoint/endpointtv-Screencast-Hosting-WCF-Services-in-Windows-Services/

相關問題