服务如何控制自己的状态?

时间:2008-09-29 00:30:29

标签: c#

我有一个继承自ServiceBase类的标准Windows服务器。

在OnStart方法中,我想在达到我的服务的主要目的之前检查某些条件。

例如:

protected override void OnStart(string[] args)
{
  if (condition == false)
  {
    EventLog.WriteEntry("Pre-condition not met, service was unable to start");

    // TODO: Convert service state to "Stopped" because my precondition wasn't met
    return;
  }

  InnitializeService();
}

任何人都有一个很好的例子来说明服务如何控制自己的状态?

2 个答案:

答案 0 :(得分:0)

抛出异常。这将导致服务MMC收到错误 - 异常消息和堆栈将自动记录到事件日志中。在这种情况下我使用ApplicationException。

此外,该服务将返回“未运行”状态。

如果您需要稍后停止,可以在ServiceBase上调用Stop方法。

答案 1 :(得分:0)

“计算机管理”MMC应用程序中的用户显示的错误似乎没有在Vista中正确获取异常文本。它显示以下内容:

  

“您的服务名称”服务   在本地计算机上启动然后   停止。一些服务停止   如果它们不在使用中则会自动   通过其他服务或计划。

然而,它正确地写入事件日志。

非常酷。感谢。