2016-09-20 2 views
1

サービスファブリックでホストしたい.NET 4.6.2コンソールアプリケーションがあります。 私のアプリケーションは、管理タスクのコンソール入力イベントをリスンしています。優雅なやり方ではなく-サービスファブリックゲスト実行可能なホスティングと正常な停止

最も重要なのはアプリケーションを停止するには「Q」です。

ゲストファブリックでこの機能をゲスト実行可能ファイルで使用することはどういうことですか?
「qボタンが押された」ではなく、むしろサービスが削除されているか、それとも何らかのイベントがある。

ゲストの実行可能ファイルとこの種の統合を実現する方法がない場合、どのプロジェクトテンプレートをビルドすることをお勧めしますか?

答えて

0

を使用して、あなたもそれを再作成することができDeleteServiceAsync を使用して、サービスを削除するには、次のようになります。

class MyService : StatefulService /* or StatelessService */ 
{ 
    protected override Task OnCloseAsync(CancellationToken cancellationToken) 
    { 
     // your graceful shutdown code goes here 
    } 
} 

しかし、このメソッドの実行は保証されません。たとえば、ホストVMが予期せず終了した場合などです。

+0

私は、この練習にステートフルなサービスプロジェクトテンプレートを使用することを考えました。それが最善の方法かどうかはわかりませんでした。それは間違っている(テンプレートの誤った使い方):-) – lapsus

0

これを行う1つの方法、あなたはそれで終わったときに、プログラムであなたのステートフルまたはステートレスなサービスクラスではCreateServiceAsync

0

サービスファブリックは、ゲスト実行可能プロセスにCtrl-C信号を送信してから、シャットダウンします。 Console.CancelKeyPressイベントまたはWin32 SetConsoleCtrlHandler関数を使用して通知を受け取ることができます。 exeは、これを動作させるためのコンソールアプリケーションとしてコンパイルする必要があることに注意してください。

関連する問題