概要
前回の記事C#でWindows Serviceを作る(3)の続き。
サービス操作やパワマネ系のイベントハンドラの実装を行います。
環境
Windows 10
Visual Studio 2017 Community
手順
サービス操作/パワマネ系のイベントハンドラを追加する
サービス管理ツールで一時停止/再開したときや、パソコンがサスペンド/レジュームしたときなどに、サービス側で他のシステムとの連携やファイル保存等の処理をしたいときが多々あります。
ということで、その際のイベントを受け取る処理を作ります。
ServiceBaseクラスの派生クラス(デフォルトだとService1.csというファイル。私のプロジェクトではServiceTest.cs)をデザイナーで開きます。
⇒ソリューションエクスプローラで該当ファイルをダブルクリックしてください。
その後、プロパティタブを表示します。
以下の4つのプロパティをTrueに設定します。
・CanHandlePowerEvent
・CanPauseAndContinue
・CanShutdown
・CanStop
次にイベントハンドラを記述します。
ServiceBaseクラスの派生クラスのコードを表示します。
ソースコード上で右クリックメニューを表示し、「クイックアクションとリファクタリング」を選択します。
以下のようなメニューが表示されるので、「オーバーライドを生成する...」を選択します。
以下のようなダイアログが表示されるので、
・OnContinue()
・OnPause()
・OnPowerEvent()
・OnShutdown()
のチェックを入れて、OKをクリックします。
そうすると、オーバーライドされたイベントハンドラが自動的に追加されます。
次回は、ここにログ出力の処理を追加していきます。