Windows服务 - 启动期间加入线程的目的

时间:2015-07-29 03:35:39

标签: c# windows service

我继承了一项Windows服务,我不明白在启动代码中创建新线程背后的目的。 OnStart服务方法调用Start()。正如您所看到的,我们加入了这个新线程,因此请在返回之前等待它完成。

我的理解是,任何长时间运行的启动代码都应该移动到一个新线程,但是那个不应该等待它完成,因为我们需要响应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);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

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