Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.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# 服务如何控制自己的状态?_C# - Fatal编程技术网

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

C# 服务如何控制自己的状态?,c#,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

我有一个从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();
}

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

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

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


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

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

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

但是,它可以正确地写入事件日志


很酷。谢谢。

奇怪,wffm。但是,我是在调试中编译的。也许这造成了不同。干杯