我們在Visual Studio .NET 2008中使用VB.NET開發了兩項服務。兩者都由單獨的個人(其中一個是我自己)完全分開開發,但兩者在引導過程中都報告了相同的錯誤:啓動後,系統事件日誌中會顯示「服務在啓動時掛起」。在該消息之後,服務繼續正常啓動(僅僅幾條消息就是服務啓動的通知)。是否有關於加載.NET框架或JIT編譯導致這個或哪些代碼的緩慢?手動完成後,它會啓動並停止。 Mine是一個非常簡單的服務,除了框架提供的啓動代碼之外,沒有啓動代碼。Windows服務啓動時啓動
更新1: 這是我的一切處理通信:
host = New ServiceHost(GetType(FSE.Licensing.FSELicense))
host.Open()
FSELicense沒有定義構造函數,所以它只是得到通過VB.NET提供的默認爲空公共構造,我猜測。
更新2: 我的問題已經演變爲基於一位同事提出的解決方案,該解決方案據說解決了問題。事實上,這個解決方案實際上只是添加了一個我認爲不必要的服務的依賴關係,因爲我的服務在請求完成之前不會執行任何操作。但是,它確實聲明瞭一個COM類型的變量。是否有可能引用此COM類型(即使沒有實例)會導致COM DLL與服務同時加載,並且可能依賴於服務?如果是的話,我沒有意識到COM引用就像.NET中的靜態鏈接。
根本沒有啓動代碼?甚至沒有實例化一個監聽事件的類?如果在啓動時沒有做任何事情,這個服務究竟做了什麼? – David 2009-08-05 16:47:20
是的,它實例化一個偵聽事件的類,但我把它當作框架代碼:)我想這不是真的。 – BlueMonkMN 2009-08-05 19:40:07
host.Open()是做什麼的? 通常,您不應該在OnStart方法中執行任何工作。您應該啓動一個線程來完成實際工作,以便OnStart方法能夠及時返回。 – 2009-08-06 17:16:51