【问题标题】:How to run multiple service instances in different AppDomains?如何在不同的 AppDomain 中运行多个服务实例?
【发布时间】:2013-01-23 15:13:30
【问题描述】:

我已经实现了一个 Windows 服务。 我应该如何运行服务的多个实例,每个实例都在自己的 AppDomain 中?

【问题讨论】:

  • 您将如何开始运行服务的多个实例?据我所知,所有服务都是单一实例。如果您想要一个单独的实例,我认为您需要创建一个全新的服务,在这种情况下它将获得自己的域。请记住,您可以创建多个运行相同可执行文件的服务(例如 MS SQL Server)
  • 看看 Windows 进程激活服务 (iis.net/learn/manage/provisioning-and-managing-iis/…)。如果它不适合您,请查看与 .NET Framework 集成并提供对象池功能的 COM+。

标签: c# .net service windows-services appdomain


【解决方案1】:

Windows 服务必须先注册,然后才能作为服务运行,因此假设您有固定数量的实例要运行,请在安装服务进程时为每个实例注册一个唯一名称,然后在您的启动代码中,只需通过ServiceBase.Run实例每一个

例如:

            var service1= new MultiService("name1");
            var service2 = new MultiService("name2");

            ServiceBase.Run(new ServiceBase[] { service1, service2 });

ServiceBase.Run 自动在其自己的 appdomain 中启动每个服务。

【讨论】:

  • 我找不到相应的文档,但ServiceBase.Run 似乎没有在单独的AppDomain 上运行每个服务。请提供来源。
猜你喜欢
  • 1970-01-01
  • 2012-12-11
  • 2023-03-14
  • 1970-01-01
  • 2020-01-09
  • 2015-08-10
  • 1970-01-01
  • 2014-09-26
  • 1970-01-01
相关资源
最近更新 更多