我在C#中设计了一个Windows服务,它连续运行并产生三个线程。 第一个线程每15秒运行一次。第二个线程每分钟运行一次。 而且他们只运行一次。
我的问题是,这个Windows服务在几天之后就会停止。在停止的那天,事件日志中没有记录任何内容。它没有在日志记录文件中写入任何内容。
我想知道Windows服务突然停止的各种原因是什么。 此服务不在我的DEV盒上,它在QA服务器上。
希望它有意义!答案 0 :(得分:2)
你的一个线程上可能有一个未处理的异常 - 自.NET 2.0以来,未处理的异常会像这样突然破坏这个过程。确保在线程上运行的任何内容的堆栈顶部都有一个catch块来处理错误(log,swallow,marshal to another thread,what)。您可以通过将以下内容添加到服务的.exe.config文件中来暂时阻止此行为(例如,还原为pre -.NET 2.0行为):
<configuration>
<runtime>
<legacyUnhandledExceptionPolicy enabled="1" />
</runtime>
</configuration>
但不要依赖它 - 它可能会在未来的.NET版本中删除(没有检查4.0-它可能已经消失了。)