我写了一个Windows服务,轮询一些timeinterval的数据并将它们写入数据库。 但是,如果发生错误写入数据库并停止服务。 我想要一个强大的解决方案,即使发生错误也会继续。如何防止服务停止在错误
我在OnStart,OnStop和Dispose中的服务所做的每个动作放置了try/catch bocks,但无论如何它都会被吸掉。
是try/catch的正确方法吗? 我必须把它放在哪里? 它将帮助把主要方法中的try/catch?
非常感谢。
我写了一个Windows服务,轮询一些timeinterval的数据并将它们写入数据库。 但是,如果发生错误写入数据库并停止服务。 我想要一个强大的解决方案,即使发生错误也会继续。如何防止服务停止在错误
我在OnStart,OnStop和Dispose中的服务所做的每个动作放置了try/catch bocks,但无论如何它都会被吸掉。
是try/catch的正确方法吗? 我必须把它放在哪里? 它将帮助把主要方法中的try/catch?
非常感谢。
尝试将您的调用包装在TransactionScope中,这将回滚您尝试创建的所有失败更改,并且不会在失败时中断。
using (var scope = new TransactionScope())
{
DeleteStuff();
UpdateStuff();
scope.Complete();
}
谢谢,我会通知我自己,并尝试它。 :) – Ephedra
非常好,希望能帮助你。我在最近的一个项目中使用了这个功能,当时我正在更新目录信息,如果它失败了,它会破坏数据库,所以我决定使用事务是更好的方法。 –
这是否解决了您的问题? –
你有没有尝试在'TransactionScope'块包裹你的数据库调用? http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.aspx –