ServiceBase

ServiceBaseは、サービスプログラムの基底となるクラス・・・。

ServiceBase クラス (System.ServiceProcess)

簡単なサービスを作成する・・・。

f:id:BG1:20170322173200p:plain

空のプロジェクトで、

f:id:BG1:20170322173254p:plain

MainClass.csを追加・・・。

f:id:BG1:20170322173331p:plain

参照でSystem.ServiceProcessを追加・・・。

f:id:BG1:20170322173421p:plain

イベントログを出力するので、Systemも追加・・・。

MainClassはServiceBaseを基底クラスとする・・・。
Mainメソッドでは、スタティックなServiceBase.RunメソッドにMainClassインスタンスをnewで生成して渡す・・・。
その前後にイベントログを出力・・・。

サービス開始時OnStartでもイベントログ出力・・・。

サービス停止時OnStopでもイベントログ出力・・・。

f:id:BG1:20170322174241p:plain

コマンドプロンプトを管理者権限で起動・・・。

C:\Project\Cloud\github.com\Sample\dotnet\ServiceBase\ServiceBase\src\ServiceBas
e_\ServiceBase_\bin\Debug>sc create ServiceBase_ binPath= C:\Project\Cloud\githu
b.com\Sample\dotnet\ServiceBase\ServiceBase\src\ServiceBase_\ServiceBase_\bin\De
bug\ServiceBase_.exe
[SC] CreateService SUCCESS

sc createコマンドでServiceBase_サービスを追加・・・。

管理ツールのサービスを見ると、

f:id:BG1:20170322174635p:plain

追加されてる・・・。
開始を押すと、

f:id:BG1:20170322174709p:plain

となり、イベントログで、

f:id:BG1:20170322174753p:plain

Run before

f:id:BG1:20170322174823p:plain

OnStart

f:id:BG1:20170322174855p:plain

これは基底クラスServiceBaseにある開始時にイベントログを出力するかのオプションがtrueになっているからかも・・・。

f:id:BG1:20170322175011p:plain

今度は停止してみる・・・。

f:id:BG1:20170322175039p:plain

止まったので、

f:id:BG1:20170322175103p:plain

OnStop

f:id:BG1:20170322175139p:plain

ServiceBaseのやつ・・・。

f:id:BG1:20170322175210p:plain

Run after

C:\Project\Cloud\github.com\Sample\dotnet\ServiceBase\ServiceBase\src\ServiceBas
e_\ServiceBase_\bin\Debug>sc delete ServiceBase_
[SC] DeleteService SUCCESS

とすると、

f:id:BG1:20170322175326p:plain

削除されてる・・・。

Sample/dotnet/ServiceBase/ServiceBase/src/ServiceBase_ at master · bg1bgst333/Sample · GitHub