在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...
}
请注意,您还可以订阅
ProgressChanged
和RunWorkerCompleted
事件,以便可以将进度和启动成功(或失败)通知服务控制管理器。关于c# - 在Windows Service中执行冗长的初始化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3063765/