【问题标题】:How to prevent a service from stopping on Error如何防止服务因错误而停止
【发布时间】:2014-06-26 08:47:01
【问题描述】:

我编写了一个 Windows 服务,它在某些时间间隔上轮询数据并将它们写入数据库。 但是如果发生写入数据库的错误并且服务停止。 我想要一个强大的解决方案,即使发生错误也能继续运行。

我在 OnStart、OnStop 和 Dispose 中的服务执行的每个操作周围放置了 try/catch 块,但它还是停止了。

try/catch 是正确的方法吗? 我必须把它放在哪里? 将 try/catch 放在 Main 方法中是否有帮助?

非常感谢。

【问题讨论】:

标签: asp.net c#-4.0 windows-services


【解决方案1】:

尝试将您的调用包装在 TransactionScope 中,这将回滚您尝试进行的任何失败更改,并且不应因失败而中断。

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

【讨论】:

  • 谢谢,我会通知自己并尝试一下。 :)
  • 很好,希望对您有所帮助。我在最近的一个项目中使用了它,我正在更新目录信息,如果它失败了,它会损坏数据库,所以我决定使用事务是更好的方法。
  • 我还不能尝试,因为我还在忙其他项目,错误没有再次出现。不过有消息我会通知你的。
猜你喜欢
  • 2019-03-10
  • 2018-06-26
  • 1970-01-01
  • 1970-01-01
  • 2012-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-03
相关资源
最近更新 更多