我在 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.
我能做些什么?
我在 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.
我能做些什么?
Windows 服务的启动时间限制为 30 秒。如果服务在 30 秒后未开始响应 ServiceControlManager 调用,则会终止。
这通常是因为您在 OnStart() 方法中放置了一些长时间运行的代码,而这些代码没有及时完成。
尽量在 Service Constructor 和 OnStart 方法中保留最少的代码,然后如果需要做其他任何事情,例如调用数据库、加载数据、IO、调用外部服务等,都应该在主应用程序中完成。
看看你们的服务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();
}
}