Topshelf v3.1 を使用して、コンソール アプリを Windows サービスとしてインストールしています。次のようなコマンドラインからコンソールをインストールします: myconsole install
コマンドが完了していないように見えることを除けば、すべて問題ないようです。通常、コマンドが実行されると、コマンド ライン コンソールは、別のコマンドを再度入力できる状態に戻ります。どういうわけか topshelf コマンドが最後のポイントで停止するため、コマンドを強制終了するには Control + C を使用する必要があります。
私のコードは以下の通りです:
class Program
{
static void Main(string[] args)
{
//HostFactory.Run(x =>
//{
// x.Service<DummyService>(s =>
// {
// s.ConstructUsing(name => new DummyService());
// s.WhenStarted(tc => { });
// s.WhenStopped(tc => { });
// });
// x.RunAsLocalSystem();
// x.SetDescription("DummyService1");
// x.SetDisplayName("DummyService2");
// x.SetServiceName("DummyService3");
// x.StartAutomatically();
//});
var service = new DummyService();
service.Run();
}
}
どういうわけか、上記でコメントアウトしたブロックのコメントアウトを解除し、Main メソッドの最後の 2 行をコメントアウトするとします。次に、コマンドをもう一度実行すると、魔法のように機能します。
PS: DummyService.Run メソッドは、コメント化されたコード ブロックをラップするだけです。基本的に、それらは同じです。
何か案は?
乾杯、LD