Windows Service -启动时连接线程的目的
本文关键字:连接线 线程 连接 Service 启动 Windows | 更新日期: 2023-09-27 18:05:27
我继承了一个windows服务,我不明白在启动代码中创建新线程的目的。Start()由OnStart服务方法调用。正如你所看到的,我们加入了这个新线程,因此,在返回之前等待它完成。
我的理解是,任何长时间运行的启动代码都应该移动到一个新的线程中,但是那个不应该等待它完成,因为我们需要及时响应windows服务管理器。
谁能告诉我;这个服务启动代码中线程的目的是什么?
public void Start()
{
if (MyServerState.Stopped == this._srvrState)
{
this._srvrState = MyServerState.Starting;
lock (this._startStopLock)
{
Thread startup = new Thread(Startup);
startup.Priority = ThreadPriority.AboveNormal;
startup.Name = "Publisher Startup";
startup.Start();
startup.IsBackground = true;
startup.Join(SYSRESPONSE_INTERVAL);
}
}
}
启动。Join应该不在那里,正如您正确地说,服务启动应该尽快完成。上面的代码可以工作,可能是因为SYSRESPONSE_INTERVAL可能小于30秒(服务控制台给启动线程完成的时间)。即使您删除了Join,您的代码也应该运行良好。