我可能无法理解 Windows 服务的行为或生命本身。
问题:
该服务意外停止,尽管已设置,但未触发任何恢复操作。ServiceHelper .ChangeStartMode 方法调用后服务停止
try
{
normalnekurwalogowanie(Constants.Values.service_name);
ServiceController svc = new ServiceController(Constants.Values.service_name);
if (svc != null)
{
ServiceHelper.ChangeStartMode(svc, (automatic ? ServiceStartMode.Automatic : ServiceStartMode.Manual));
svc.Close();
}
else
normalnekurwalogowanie("null");
}
catch (Exception ex)
{
//Logger.Instance.Error("Error message: {0}\nError Stack Trace: {1}", new object[] { ex.Message, ex.StackTrace });
normalnekurwalogowanie(ex.ToString());
}
在我的日志文件中有一个错误Open Service Manager Error
:Unable to open Service Manager
现在,有几个有趣的事实: - 如您所见,异常被捕获并打印到文件中,但服务停止 - 错误仅在重新启动后发生;在系统重新启动之前安装服务后不会发生
解决方案:
在我删除了对外部Logger
类的引用(不是我写的,我没有代码)之后,问题就消失了。我不知道为什么。
问题:
- 捕获的异常如何仍然使服务崩溃(并且以某种方式不执行恢复操作)?
- 重新启动后代码如何以不同的方式执行?它通过完全相同的顺序。
即使外部类可能对我的代码产生影响,它也不会在引发异常的行之前的任何地方调用。顺便说一句,winforms 应用程序中使用的 externall 类工作正常,重新启动前的服务工作正常。
我将尝试获取外部类代码并更新问题。