我有一个继承自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();
}
任何人都有一个很好的例子来说明服务如何控制自己的状态?
答案 0 :(得分:0)
抛出异常。这将导致服务MMC收到错误 - 异常消息和堆栈将自动记录到事件日志中。在这种情况下我使用ApplicationException。
此外,该服务将返回“未运行”状态。
如果您需要稍后停止,可以在ServiceBase上调用Stop方法。
答案 1 :(得分:0)
“计算机管理”MMC应用程序中的用户显示的错误似乎没有在Vista中正确获取异常文本。它显示以下内容:
“您的服务名称”服务 在本地计算机上启动然后 停止。一些服务停止 如果它们不在使用中则会自动 通过其他服务或计划。
然而,它正确地写入事件日志。
非常酷。感谢。