Rya*_*son 6 c# windows-services topshelf
有没有办法在调用TopShelf.HostFactory.Run()之后将ServiceName和InstanceName赋予TopShelf服务?
一种选择是直接从命令行args中拉出它.
但好奇的是,TopShelf是否会暴露这些属性本身.
在挖掘TopShelf的源代码后,没有看到暴露的点/属性.
您可以获取服务名称(以及其他属性,如描述和显示名称),如下所示:
HostFactory.Run(x =>
{
x.Service((ServiceConfigurator<MyService> s) =>
{
s.ConstructUsing(settings =>
{
var serviceName = settings.ServiceName;
return new MyService();
});
}
}
Run Code Online (Sandbox Code Playgroud)
或者如果您的 MyService 实现了 ServiceControl
HostFactory.Run(x =>
{
x.Service<MyService>((s) =>
{
var serviceName = s.ServiceName;
return new MyService();
});
}
/***************************/
class MyService : ServiceControl
{
public bool Start(HostControl hostControl) { }
public bool Stop(HostControl hostControl) { }
}
Run Code Online (Sandbox Code Playgroud)
如果您需要 MyService 中的服务名称,只需将其作为构造函数参数或属性传递即可。
| 归档时间: |
|
| 查看次数: |
2302 次 |
| 最近记录: |