2010-01-04 120 views
2

我們有用C#編寫的Windows服務。它運行了大約5-6小時後會崩潰。 我們的C#Windows服務調用非託管代碼,這是一個COM組件。C#中的Windows服務 - 崩潰/錯誤

從事件查看器中唯一的錯誤信息,我得到的是:

錯誤的應用程序application.exe,版本2.2.2.0,印花稅45ed8d14, 錯誤模塊comcomponent.dll,版本5.2.3790.3959,印花稅45d70ad8,調試? 0,故障地址0x0000bee7。

是否有任何方法通過在不同的進程中運行未託管代碼來保持Windows服務持續運行/運行?

截至目前我們已經嘗試AppDomain作爲不同的過程,但它未能克服這個問題。

請提出合適的解決方案。

+1

COM dll做什麼?它寫了什麼語言?由於COM組件 – shahkalpesh 2010-01-04 13:16:55

+0

請提供一些其他解決方案服務吃了大量的內存 – venkat 2010-01-05 05:07:45

回答

1

即使你啓動一個新的AppDomain,它仍然是一個進程。

既然您已經在使用COM,我認爲.NET Enterprise Services將是您的最佳解決方案。在許多其他功能中,Enterprise Services可以將您的COM對象託管在不同的進程中。

+0

你能指導我如何處理企業服務,因爲我是新來的使用..... NET企業服務 – venkat 2010-01-04 13:32:50

+0

它真的只有另一個用於COM +的單詞,因此您可以使用標準的COM +工具來配置COM組件以進行進程外激活和託管。 – 2010-01-04 14:08:30

0

除了試圖使您的代碼儘可能健壯,您可能想看看Service Protector。無論出於何種原因它會在崩潰,掛起或停止時自動重啓您的關鍵任務服務,並會向您發送電子郵件通知您發生了什麼。利用免費的30天試用版來確保它有助於解決您的問題。

祝你好運!