2014-06-26 40 views
0

我寫了一個Windows服務,輪詢一些timeinterval的數據並將它們寫入數據庫。 但是,如果發生錯誤寫入數據庫並停止服務。 我想要一個強大的解決方案,即使發生錯誤也會繼續。如何防止服務停止在錯誤

我在OnStart,OnStop和Dispose中的服務所做的每個動作放置了try/catch bocks,但無論如何它都會被吸掉。

是try/catch的正確方法嗎? 我必須把它放在哪裏? 它將幫助把主要方法中的try/catch?

非常感謝。

+0

你有沒有嘗試在'TransactionScope'塊包裹你的數據庫調用? http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.aspx –

回答

1

嘗試將您的調用包裝在TransactionScope中,這將回滾您嘗試創建的所有失敗更改,並且不會在失敗時中斷。

using (var scope = new TransactionScope()) 
    { 
     DeleteStuff(); 
     UpdateStuff(); 
     scope.Complete(); 
    } 
+0

謝謝,我會通知我自己,並嘗試它。 :) – Ephedra

+0

非常好,希望能幫助你。我在最近的一個項目中使用了這個功能,當時我正在更新目錄信息,如果它失敗了,它會破壞數據庫,所以我決定使用事務是更好的方法。 –

+0

這是否解決了您的問題? –