在topshelf中,有什么方法可以在一个可执行文件中运行多个主机?

// Create hosts
var h1 = HostFactory.New (...); var h2 = HostFactory.New (...)

// Start hosts
 in one application Runner.Run (h1, h2);

编辑

用线程解决。但不确定是否安全...
new Thread (()=>Runner.Run (h1));
new Thread (()=>Runner.Run (h2));

最佳答案

注意:这仅对Topshelf的3.0之前的版本有效。在3.0中,已将其删除,并由托管多个服务的其他方法替换。

无法运行多个主机。启动主机会阻止执行,会做很多事情。但是,您可以在单个主机中注册多个逻辑服务。

https://github.com/Topshelf/Topshelf/wiki/Creating-a-service

return (int)HostFactory.Run(x => {
  x.Service<Service1>({ ... });
  x.Service<Service2>({ ... ]);
});

所有逻辑服务都在单个AppDomain下运行。这可能是问题,也可能不是问题。如果您需要将它们托管在单独的AppDomain中,我们将开始进行搁置。 http://topshelf-project.com/documentation/shelving/作为警告,如果要启动具有相同类型的多个逻辑服务,请确保它们在配置时具有唯一的名称。

关于高架多主机,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9219875/

10-16 17:54