2014-06-26 41 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

这是否解决了您的问题? –