为什么这项服务“没有及时响应启动或控制请求”?

时间:2013-05-06 16:47:20

标签: c# windows-services

后台:客户端给了我第三方开发的Windows服务,他们希望我为他们运行。然而,当我启动服务时,它超时并且我得到1053“服务没有响应......及时时尚”错误。

我已经反映了程序集以获取它在start方法中执行的代码,但从粗略的一瞥看起来它应该返回。

实际问题:有人可以解释为什么这项服务导致1053错误吗?

(检查日志文件已确认计时器已初始化并在服务终止前多次触发。)

private void InitTimers()
{
    if (this._config.RunMode == RunModes.Continuous)
    {
        this.srvcTimer.Interval = Math.Max(this._config.Interval.TotalSeconds, 1.0) * 1000.0;
    }
    else
    {
        this.srvcTimer.Interval = 60000.0;
    }
    this.srvcTimer.AutoReset = true;
    this.srvcTimer.Enabled = true;
}

2 个答案:

答案 0 :(得分:3)

服务构造函数必须以“及时”方式返回,以使服务成功启动。这意味着您无法在构造函数中启动可能很昂贵的操作,但必须将其委托给另一个线程。

通常,您可能会发现在开发服务时连接到本地数据库是正常的,但是一旦部署它并且必须通过Internet连接,您就会发现它失败了。

如果没有看到构造函数中的确切代码,我无法确定,但如果将其移动到线程中,则服务应该成功启动。显然,这意味着您需要通过某种方式检查服务是否已正确启动并将错误报告给主程序。

答案 1 :(得分:-1)

这是因为您已经定义了服务日志,并在代码中进行了更改。

我最近遇到过这种情况,解决方案是删除服务日志注册表:

HKLM/System/ControlSet001/services/eventlog/<your service name>

如果您对此不确定,请先备份您的注册表。