Windows服务启动(超时(30000毫秒))

时间:2013-09-26 14:32:13

标签: c# windows vb.net windows-services

我在vb.net中为我的项目创建了一个Windows服务安装文件,但在安装Windows服务后,当我尝试启动该Windows服务时,它抛出以下错误:

The service did not respond to the start or control request in a timely fashion. 
Timeout (30000 milliseconds) waiting for the Test service to connect.

我该怎么办?

2 个答案:

答案 0 :(得分:3)

在Windows服务中,您的启动时间限制为30秒。如果服务在30秒后没有开始响应ServiceControlManager调用,它将被终止。

这通常是因为您在OnStart()方法中放置了一些长时间运行的代码,但这些代码并未及时完成。

尽量保留服务构造函数中的最小代码。 OnStart方法以及其他任何需要做的事情,如调用数据库,加载数据,IO,调用外部服务等,都应该在主应用程序中完成。

答案 1 :(得分:1)

查看您的服务OnStart()方法?你在那里做任何重物吗?如果事情花费的时间超过预期,不会抛出异常

看起来好像你想做这样的事情

class MyService
{
    public void OnStart()
    {
        //blocks here
        Thread.Sleep(TimeSpan.FromSeconds(31));     
    }
}

相反,你应该做像

这样的事情
class MyService
{
    private Thread workerThread;

    public void OnStart()
    {
        workerThread = new Thread(()=>
        {
            Thread.Sleep(TimeSpan.FromSeconds(31));     
        })

        // doesn't block here
        workerThread.Start();
    }
}