在Windows服务启动(或从暂停中恢复)而又不阻止服务控制管理器的情况下,进行长时间初始化的最佳方法是什么?

最佳答案

您可以使用 BackgroundWorker 来执行冗长的操作,以响应Service.Start事件。

在您的OnStart()派生类的ServiceBase方法中这样做很容易。还有一个合理的good example on MSDN

protected override void OnStart(string[] args)
{
    var worker = new BackgroundWorker();
    worker.DoWork += DoSomeLongOperation;

    worker.RunWorkerAsync();
}

private void DoSomeLongOperation(object sender, DoWorkEventArgs e)
{
   // do your long operation...
}

请注意,您还可以订阅ProgressChangedRunWorkerCompleted事件,以便可以将进度和启动成功(或失败)通知服务控制管理器。

关于c# - 在Windows Service中执行冗长的初始化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3063765/

10-13 07:07