2011-05-11 168 views
1

我正在運行Win 7 Pro 64位。我使用.NET 4框架在C#中編寫了一項服務。它安裝正確並開始運行。我知道它運行是因爲它將一些輸出寫入日誌文件。但是,幾秒鐘後它就會死亡。當我使用Visual Studio 2010 Pro來運行相同的代碼而不是服務時,它永遠不會死亡。所以,我明顯的問題是關於用於調試的適當方法,因爲我無法弄清楚爲什麼它應該作爲服務而死,而不是作爲非服務而死。我已經在代碼中的幾個地方寫入了日誌文件,但它似乎每次都會在不同的地方死去。該應用程序有3個線程。歡迎任何建議。服務運行然後死亡

+0

您的Windows事件日誌有說什麼嗎? – keyboardP

+0

同一個線程每次首先死亡嗎? – soandos

+2

在「Start()」方法中是你的邏輯嗎? –

回答

0

使用System.Diagnostics.Debugger.Launch將其作爲服務運行並調試。如果在這種情況下不會崩潰,請添加其他日誌記錄,並確保添加頂級捕獲以寫出任何錯誤。如果仍然不能創建崩潰轉儲文件並使用SOS和windbg進行檢查。

4

如果您直接從Service的Start方法中運行代碼,則很容易發生此行爲。問題在於服務的啓動方法有望啓動該服務,並且立即返回。如果它在那裏執行代碼,Windows將終止你的服務。

正確的處理方法是讓服務的Start()方法在專用線程中運行代碼。除了線程創建和立即返回之外,它不需要任何東西。如果這是問題,只需設置一個前臺線程並將您的邏輯放在那裏,它可能會正常工作。