TopShelf构造使用与启动时间

use*_*956 1 topshelf

我想问一下在ConstructUsing中应该进行哪些操作,何时启动。实际上,通常放置在构造器中的内容(例如配置读取),服务情况下的初始化应放置在WhenStarted IMO中,以便在服务重新启动时刷新所有内容,那么该如何使用ConstructUsing?只是更新课程而已?但是在那种情况下,为什么不还要在WhenStarted中进行更新呢?

提前致谢

stu*_*rtd 5

ConstructUsing定义如何创建您的服务,实际上可以只是一个new(),或者是获取服务的另一种方式:

例如,使用IoC:

// Release in WhenStopped()
sc.ConstructUsing(() => container.Resolve<IMyService>());
Run Code Online (Sandbox Code Playgroud)

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

sc.ConstructUsing(() => serviceInstance);
Run Code Online (Sandbox Code Playgroud)

WhenStarted另一方面,它定义了启动服务实例时要执行的操作,因此需要配置实例:您将无法在此处创建服务:

sc.WhenStarted(service => service.Start());
Run Code Online (Sandbox Code Playgroud)