1

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

4

1 に答える 1