public interface IMyServiceContract
{
void Start();
void Stop();
void SessionChanged(Topshelf.SessionChangedArguments args);
}
我的混凝土:
public class MyService : IMyServiceContract
{
public void Start()
{
}
public void Stop()
{
}
public void SessionChanged(SessionChangedArguments e)
{
Console.WriteLine(e.ReasonCode);
}
}
IMyServiceContract myServiceObject = new MyService(); // // container.Resolve<IMyServiceContract>();
HostFactory.Run(x =>
{
x.Service<IMyServiceContract>(s =>
{
s.ConstructUsing(name => myServiceObject);
s.WhenStarted(myso => myso.Start());
s.WhenStopped(myso => myso.Stop());
s.WhenSessionChanged((myso, hc, chg) => myso.SessionChanged(chg));
});
x.EnableSessionChanged();
如果你写一个文本文件(我有控制台。WriteLine(e.ReasonCode);)。。。你可以看到变化。我通过做一个LockUser(在windows 10 x64中)并重新登录进行了测试。
这对我有用。
我的包裹。配置以便您知道我使用的是哪个版本的TopShelf
<package id="log4net" version="2.0.5" targetFramework="net45" />
<package id="Topshelf" version="4.0.3" targetFramework="net461" />
<package id="Topshelf.Log4Net" version="4.0.3" targetFramework="net461" />