Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# windows服务停止的原因_C#_Windows_Windows Services - Fatal编程技术网

C# windows服务停止的原因

C# windows服务停止的原因,c#,windows,windows-services,C#,Windows,Windows Services,我用C#设计了一个windows服务,它连续运行并产生三个线程。 第一个线程每15秒运行一次。第二个线程每分钟运行一次。 而第三只跑一次 我的问题是,这项windows服务在几天后不知何故就停止了。停止当天,事件日志中没有记录任何内容。它也没有在日志文件中写入任何内容 我想知道windows服务突然停止的各种原因是什么。 这个服务不在我的开发设备上,它在QA服务器上 希望它有意义 您的某个线程上可能存在未处理的异常-自.NET 2.0以来,未处理的异常会像这样突然中断进程。确保在线程上运行的任何

我用C#设计了一个windows服务,它连续运行并产生三个线程。 第一个线程每15秒运行一次。第二个线程每分钟运行一次。 而第三只跑一次

我的问题是,这项windows服务在几天后不知何故就停止了。停止当天,事件日志中没有记录任何内容。它也没有在日志文件中写入任何内容

我想知道windows服务突然停止的各种原因是什么。 这个服务不在我的开发设备上,它在QA服务器上


希望它有意义

您的某个线程上可能存在未处理的异常-自.NET 2.0以来,未处理的异常会像这样突然中断进程。确保在线程上运行的任何东西的堆栈顶部都有一个catch块来处理错误(log、swallow、封送到另一个线程等等)。通过将以下内容添加到服务的.exe.config文件中,可以临时防止此行为(例如,恢复到.NET 2.0之前的行为):

<configuration>
  <runtime>
    <legacyUnhandledExceptionPolicy enabled="1" />
  </runtime>
</configuration>


但是不要依赖它,它可能会在将来的.NET版本中被删除(没有选中4.0,它可能已经不存在了)。

这是正确的。每个线程都必须有一个try/catch块,该块捕获任何
异常
,并优雅地处理故障(如果没有其他适用的方法,则日志到事件日志是一个很好的解决方案)。否则,任何线程中未经处理的异常都将终止您的整个服务。如果您未使用failstop日志记录(即,日志到事件日志可以抛出权限),请确保您的错误处理代码也具有try/catch,或者日志失败也可能导致进程停止。@Daniel Pryden:线程中的异常是否不会被
AppDomain.UnhandledException
处理程序捕获?或者这不是一种可靠的方法?AppDomain.UnhandledException只是一个通知。它没有像1.1中那样提供支持。