【发布时间】:2016-04-01 17:00:04
【问题描述】:
我有一个 Windows 服务。在启动时,它会检查是否有任何工作分配给它——如果没有,它就会退出。问题是恢复机制设置为重新启动服务。
如果服务正常崩溃,这就是我想要的,但如果我自己以编程方式退出服务则不是。
到目前为止,我在下面尝试的所有操作都导致 Windows 自动重新启动服务:
Thread th;
protected override void OnStart(string[] args)
{
th = new Thread(new ThreadStart(StartMyService));
th.Start();
}
private void StartMyService()
{
if (WorkAvailable()) {
InitWork();
} else {
this.ExitCode = 0; // no errors
Stop();
}
}
protected override void OnStop()
{
// dispose of things
try
{
if (th != null && th.ThreadState == ThreadState.Running)
th.Abort();
}
catch { }
Environment.Exit(this.ExitCode);
}
我尝试了不同的 ExitCode 值,但 Windows 总是重新启动服务。我也试过Environment.FailFast,结果相同。我错过了什么?
【问题讨论】:
-
这不是任何人所期望的服务,操作系统也不是。当服务正在运行时,您希望它定期检查是否需要完成任何工作,而无需经常停止并重新启动它。使用计时器。
标签: c# .net windows windows-services windows-server-2012