Topshelf C# Windows 服务 - 无法通过 HostControl
Topshelf C# Windows Service - Cannot pass HostControl
我正在尝试将 HostControl 实例传递给 topshelf 服务的启动方法,但出现以下编译器错误:
- 并非所有代码路径return lambda 表达式中的值
- 'HostSettings' 不包含 'ConstructUsing'
的定义
- 'HostSettings' 不包含 'WhenStarted' 的定义并且没有
扩展方法 'WhenStarted' 接受类型为 'HostSettings' 的第一个参数
可以找到(您是否缺少 using 指令或程序集引用?)
我已经为 EventBroker class 实现了接口 'ServiceControl'。
using Topshelf;
namespace Sample
{
class Program
{
static void Main(string[] args)
{
HostFactory.Run(x =>
{
x.Service<EventBroker>(s =>
{
s.ConstructUsing(name => new EventBroker());
s.WhenStarted((tc, hostControl) => tc.Start(hostControl));
s.WhenStopped(tc => tc.Stop());
});
x.RunAsLocalSystem();
我是否遗漏了一些程序集参考或其他内容?我正在使用 TopShelf v3.3.154.0。没有 'hostControl' 它工作正常。
在排除故障后,我发现 'ServiceControl' 没有正确执行。 EventBroker 的 Stop/Start 方法没有 return 类型 (bool)。
现在,使用以下 Stop/Start 方法,它正在工作。
bool Start(HostControl hostControl)
{
return true;
}
bool Stop(HostControl hostControl)
{
return true;
}
我正在尝试将 HostControl 实例传递给 topshelf 服务的启动方法,但出现以下编译器错误:
- 并非所有代码路径return lambda 表达式中的值
- 'HostSettings' 不包含 'ConstructUsing' 的定义
- 'HostSettings' 不包含 'WhenStarted' 的定义并且没有 扩展方法 'WhenStarted' 接受类型为 'HostSettings' 的第一个参数 可以找到(您是否缺少 using 指令或程序集引用?)
我已经为 EventBroker class 实现了接口 'ServiceControl'。
using Topshelf;
namespace Sample
{
class Program
{
static void Main(string[] args)
{
HostFactory.Run(x =>
{
x.Service<EventBroker>(s =>
{
s.ConstructUsing(name => new EventBroker());
s.WhenStarted((tc, hostControl) => tc.Start(hostControl));
s.WhenStopped(tc => tc.Stop());
});
x.RunAsLocalSystem();
我是否遗漏了一些程序集参考或其他内容?我正在使用 TopShelf v3.3.154.0。没有 'hostControl' 它工作正常。
在排除故障后,我发现 'ServiceControl' 没有正确执行。 EventBroker 的 Stop/Start 方法没有 return 类型 (bool)。
现在,使用以下 Stop/Start 方法,它正在工作。
bool Start(HostControl hostControl)
{
return true;
}
bool Stop(HostControl hostControl)
{
return true;
}