我在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.
我该怎么办?
答案 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();
}
}