TopShelf ConstructUsing vs WhenStarted

时间:2014-09-08 08:13:50

标签: topshelf

我想问一下ConstructUsing应该采取哪些操作以及WhenStarted中的操作。实际上通常放在构造中的配置读取,在服务的情况下初始化的东西应该放在WhenStarted IMO中以便在服务重启期间刷新所有东西,那么ConstructUsing还剩下什么呢?刚刚上课,那就是全部?但在那种情况下,为什么不在WhenStarted中进行新的创作呢?

提前致谢

1 个答案:

答案 0 :(得分:4)

ConstructUsing定义了如何创建服务,它实际上可能只是一个新的(),或另一种获取服务的方式:

例如,使用IoC:

// Release in WhenStopped()
sc.ConstructUsing(() => container.Resolve<IMyService>());

另一个选择是使用服务的现有实例:

sc.ConstructUsing(() => serviceInstance);
另一方面,

WhenStarted定义了服务实例启动时要采取的操作,因此需要配置实例:您将无法在此处创建服务:

sc.WhenStarted(service => service.Start());