2016-12-07 23 views
0

Topshelfでホストされているアプリケーションがサービスとしてではなくコンソール上で実行されている場合は、Ctrl + Cを押して停止します。これはTopshelfによって処理されます(CancelKeyPressConsoleです)。 mが押されたときに私のサービスのいくつかの小さな詳細を制御できるように、Topshelfで他のキーのハンドラを登録することは可能ですか?F5(コンソールウィンドウにはもちろん焦点が合っていて、サービスとして実行しているとき)?コマンドライン上のトップシェルフホストされたアプリケーションがキー押下を検出できますか?

+0

Topshelfのクラス構築のStartupメソッドでハンドラを登録しようとしましたか? – ColinM

+0

@ColinMどのハンドラですか? 'Startup'メソッドで持つことができるサービスインスタンスの横にある唯一のものは、イベントを提供しないTopshelf' HostControl'です。また 'Console'クラス自体には' CancelKeyPress'イベントしかありません。サービスの実行中に何もキーを押さない。 – ZoolWay

答えて

0

サービスは一般に対話型コントロールをサポートするように設計されていないため、Topshelfでこれを行う方法はありません。サービスを制御する必要がある場合は、ソケット(raw、HTTPセルフホストなど)またはサービスへのメッセージベースの通信など、別のメカニズムを使用することをお勧めします。

+0

私はその点を見て、サービスではなくコンソールアプリケーションとして実行している間にデバッグ機能を提供することを考えていました。しかし、両方のモードが機能的には同等ではないことを意味するので、私は別のツールから制御通信プロトコルを使用して道を進んでいきます。ありがとう。 – ZoolWay

関連する問題