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);
        }
    }
}

Windows Service -启动时连接线程的目的

启动。Join应该不在那里,正如您正确地说,服务启动应该尽快完成。上面的代码可以工作,可能是因为SYSRESPONSE_INTERVAL可能小于30秒(服务控制台给启动线程完成的时间)。即使您删除了Join,您的代码也应该运行良好。