注
この記事は、.NET でホストされているサービスには適用されません。 Microsoft.Extensions.Hosting.BackgroundServiceと Worker Service テンプレートを使用した Windows サービスの最新のコンテンツについては、次を参照してください。
Windows サービス アプリケーションは、 System.ServiceProcess.ServiceBase クラスから継承するクラスに基づいています。 このクラスのメソッドをオーバーライドし、サービスの動作を決定するための機能を定義します。
サービスの作成に関連する主なクラスは次のとおりです。
System.ServiceProcess.ServiceBase — サービスを作成するときに、 ServiceBase クラスのメソッドをオーバーライドし、この継承されたクラスでサービスがどのように機能するかを決定するコードを定義します。
System.ServiceProcess.ServiceProcessInstaller System.ServiceProcess.ServiceInstaller —これらのクラスを使用して、サービスをインストールおよびアンインストールします。
さらに、 ServiceController という名前のクラスを使用して、サービス自体を操作できます。 このクラスはサービスの作成には関係ありませんが、サービスの開始と停止、それにコマンドの渡し、一連の列挙を返すために使用できます。
サービスの動作の定義
サービス クラスでは、サービス コントロール マネージャーでサービスの状態が変更されたときに何が起こるかを決定する基底クラス関数をオーバーライドします。 ServiceBase クラスは、次のメソッドを公開します。これをオーバーライドしてカスタム動作を追加できます。
メソッド | オーバーライドの対象 |
---|---|
OnStart | サービスの実行を開始するときに実行する必要があるアクションを指定します。 サービスが便利な作業を実行するには、この手順でコードを記述する必要があります。 |
OnPause | サービスが一時停止したときに何が起こるかを示します。 |
OnStop | サービスの実行が停止したときに何が起こるかを示します。 |
OnContinue | 一時停止後にサービスが正常な機能を再開したときに何が起こるかを示します。 |
OnShutdown | その時点でサービスが実行されている場合は、システムがシャットダウンする直前に何が起こるかを示します。 |
OnCustomCommand | サービスがカスタム コマンドを受け取ったときに何が起こるかを示します。 カスタム コマンドの詳細については、MSDN オンラインを参照してください。 |
OnPowerEvent | バッテリ残量の少ない操作や中断された操作など、電源管理イベントが受信されたときにサービスが応答する方法を示します。 |
注
これらのメソッドは、サービスがその有効期間中に移動する状態を表します。サービスは、ある状態から次の状態に移行します。 たとえば、OnStartが呼び出される前に、サービスが OnContinue コマンドに応答することはありません。
他にも、関心のあるプロパティとメソッドがいくつかあります。 これらには次のものが含まれます。
ServiceBase クラスのRun メソッド。 これは、サービスのメイン エントリ ポイントです。 Windows サービス テンプレートを使用してサービスを作成すると、アプリケーションの
Main
メソッドにコードが挿入され、サービスが実行されます。 このコードは次のようになります。ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new Service1() }; Run(ServicesToRun);
Dim ServicesToRun() As System.ServiceProcess.ServiceBase ServicesToRun = New System.ServiceProcess.ServiceBase() {New Service1()} System.ServiceProcess.ServiceBase.Run(ServicesToRun)
注
これらの例では、 ServiceBase型の配列を使用します。この配列には、アプリケーションに含まれる各サービスを追加してから、すべてのサービスをまとめて実行できます。 ただし、1 つのサービスのみを作成する場合は、配列を使用せず、 ServiceBase から継承する新しいオブジェクトを宣言してから実行します。 例については、「 方法: プログラムによってサービスを記述する」を参照してください。
ServiceBase クラスの一連のプロパティ。 これらは、サービスで呼び出すことができるメソッドを決定します。 たとえば、 CanStop プロパティが
true
に設定されている場合、サービスの OnStop メソッドを呼び出すことができます。 CanPauseAndContinue プロパティをtrue
に設定すると、OnPauseメソッドとOnContinue メソッドを呼び出すことができます。 これらのプロパティのいずれかをtrue
に設定する場合は、関連付けられているメソッドの処理をオーバーライドして定義する必要があります。
また、 ServiceController と呼ばれるコンポーネントを使用して、既存のサービスとの通信と動作の制御を行うこともできます。
こちらも参照ください
.NET