我可能在解决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
类的引用(不是我写的,我没有代码)后问题就消失了。我不知道为什么。
问题:
即使外部类可能对我的代码产生影响,它也不会在引发异常的行之前的任何地方调用。 BTW winforms app中使用的externall类工作正常,在重启之前服务正常。< / em>的
我将尝试获取外部类代码并更新问题。
答案 0 :(得分:1)
捕获的异常如何仍然使服务崩溃(并且在某种程度上不执行恢复操作)?
原始异常可能不会使服务崩溃,但如果您的第一个异常处理程序中有第二个异常,则该服务将崩溃。我会通过在其周围放置一个try / catch来检查Logger.Instance.Error()
是否抛出异常。
重启后代码的执行方式如何?它完全相同。
虽然它可能与您的代码中的序列相同,但我们不知道在上次崩溃之前磁盘上剩余的剩余状态。这可能是产生差异的原因。