C# 为什么要在BackgroundWorker中为Windows服务中托管的WCF服务实例化ServiceHost?

C# 为什么要在BackgroundWorker中为Windows服务中托管的WCF服务实例化ServiceHost?,c#,wcf,windows-services,backgroundworker,C#,Wcf,Windows Services,Backgroundworker,我创建了一个Windows服务来承载WCF服务。它可以正常工作,但我在网上注意到,许多人构建他们的服务,使得servicehost对象在BackgroundWorker中实例化。我只是想知道使用这种模式的理由/优势是什么 这里有一个例子来说明我的意思 { internal static ServiceHost myHost = null; BackgroundWorker worker; public Service1() { Initi

我创建了一个Windows服务来承载WCF服务。它可以正常工作,但我在网上注意到,许多人构建他们的服务,使得servicehost对象在BackgroundWorker中实例化。我只是想知道使用这种模式的理由/优势是什么

这里有一个例子来说明我的意思

{
     internal static ServiceHost myHost = null;
     BackgroundWorker worker;

     public Service1()
     {
        InitializeComponent();
     }

     protected override void OnStart(string[] args)
     {
        worker = new BackgroundWorker();
        worker.DoWork += new DoWorkEventHandler(worker_DoWork);
     }

     void worker_DoWork(object sender, DoWorkEventArgs e)
     {
        //throw new NotImplementedException();
        if (myHost != null)
        {
           myHost.Close();
        }
        myHost = new ServiceHost(typeof(ServicetohostinWindow.Service1));
        myHost.Open();
     }
}

可能这样做是为了取消阻止OnStart方法,该方法通常在服务启动时调用。构建和打开新的服务主机可能需要很长的时间,在OnStart完成之前,服务不会报告自己已启动。服务处于“启动”状态的时间有一个超时,因此必须尽快启动。

阅读并告诉我:)如果可以设置ServiceBehavior在每次调用时打开新线程,为什么要这样做?可能是因为异步的原因?