ServiceBase クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
サービス アプリケーションの一部として存在するサービスの基本クラスを提供します。 ServiceBase は、新しいサービス クラスを作成するときに派生する必要があります。
public ref class ServiceBase : System::ComponentModel::Component
public class ServiceBase : System.ComponentModel.Component
type ServiceBase = class
inherit Component
Public Class ServiceBase
Inherits Component
- 継承
- 派生
注釈
サービス アプリケーションでサービス クラスを定義するときに、 ServiceBase から派生します。 便利なサービスは、 OnStart メソッドと OnStop メソッドをオーバーライドします。 その他の機能については、サービスの状態の変化に応じて、特定の動作で OnPause と OnContinue をオーバーライドできます。
サービスは、ユーザー インターフェイスをサポートせず、ログオンしているユーザー アカウントでは実行されない可能性がある実行時間の長い実行可能ファイルです。 このサービスは、ユーザーがコンピューターにログオンしなくても実行できます。
既定では、サービスはシステム アカウントで実行されます。これは管理者アカウントと同じではありません。 システム アカウントの権限を変更することはできません。 または、 ServiceProcessInstaller を使用して、サービスを実行するユーザー アカウントを指定することもできます。
実行可能ファイルには複数のサービスを含めることができますが、サービスごとに個別の ServiceInstaller を含める必要があります。
ServiceInstaller インスタンスは、サービスをシステムに登録します。 インストーラーは、サービス コマンドの記録に使用できるイベント ログに各サービスを関連付けます。 実行可能ファイルの main() 関数は、実行するサービスを定義します。 サービスの現在の作業ディレクトリはシステム ディレクトリであり、実行可能ファイルが配置されているディレクトリではありません。
サービスを開始すると、システムは実行可能ファイルを検索し、実行可能ファイルに含まれるそのサービスの OnStart メソッドを実行します。 ただし、サービスの実行は実行可能ファイルの実行と同じではありません。 実行可能ファイルはサービスのみを読み込みます。 サービスは、Service Control Manager を介してアクセスされます (たとえば、開始および停止)。
実行可能ファイルは、サービスで Start を初めて呼び出す際に、 ServiceBase 派生クラスのコンストラクターを呼び出します。 OnStart コマンド処理メソッドは、コンストラクターの実行直後に呼び出されます。 サービスが初めて読み込まれた後、コンストラクターは再度実行されないため、コンストラクターによって実行される処理と、 OnStartによって実行される処理を分離する必要があります。 OnStopによって解放できるリソースは、OnStartで作成する必要があります。 コンストラクターでリソースを作成すると、リソースを解放した後にサービスが再度開始された場合 OnStop 、リソースが適切に作成されなくなります。
サービス コントロール マネージャー (SCM) は、サービスと対話する方法を提供します。 SCM を使用して、Start、Stop、Pause、Continue、またはカスタム コマンドをサービスに渡すことができます。 SCM は、 CanStop と CanPauseAndContinue の値を使用して、サービスが Stop、Pause、または Continue コマンドを受け入れるかどうかを判断します。 SCM のコンテキスト メニューで停止、一時停止、続行が有効になるのは、対応するプロパティ CanStop または CanPauseAndContinue がサービス クラスに true 場合のみです。 有効にすると、コマンドがサービスに渡され、 OnStop、 OnPause、または OnContinue が呼び出されます。
CanStop、CanShutdown、またはCanPauseAndContinueがfalseされている場合、メソッドを実装した場合でも、対応するコマンド処理メソッド (OnStop など) は処理されません。
ServiceController クラスを使用して、SCM がユーザー インターフェイスを使用して行うことをプログラムで実行できます。 コンソールで使用できるタスクを自動化できます。
CanStop、CanShutdown、またはCanPauseAndContinueがtrueされているが、対応するコマンド処理メソッド (OnStop など) を実装していない場合、システムは例外をスローし、コマンドを無視します。
ServiceBaseにOnStart、OnStop、またはその他のメソッドを実装する必要はありません。 ただし、サービスの動作については OnStartで説明されているため、少なくともこのメンバーをオーバーライドする必要があります。 実行可能ファイルの main() 関数は、 Run メソッドを呼び出すことによって、実行可能ファイル内のサービスを Service Control Manager に登録します。
Run メソッドに渡されるServiceBase オブジェクトの ServiceName プロパティは、そのサービスのサービス インストーラーのServiceName プロパティと一致する必要があります。
sc create コマンドを使用して、最新の .NET を対象とするサービスをインストールすることも、InstallUtil.exeを使用して .NET Framework を対象とするサービスをインストールすることもできます。
注
サービス呼び出しの通知を受信するアプリケーション イベント ログ以外のログを指定できますが、 AutoLog と EventLog プロパティのどちらもカスタム ログに書き込むできません。 自動ログ記録を使用しない場合は、 AutoLog を false に設定します。
コンストラクター
| 名前 | 説明 |
|---|---|
| ServiceBase() |
ServiceBase クラスの新しいインスタンスを作成します。 |
フィールド
| 名前 | 説明 |
|---|---|
| MaxNameLength |
サービス名の最大サイズを示します。 |
プロパティ
| 名前 | 説明 |
|---|---|
| AutoLog |
イベント ログで Start、Stop、Pause、Continue のコマンドを報告するかどうかを示します。 |
| CanHandlePowerEvent |
コンピューターの電源状態の変更に関する通知をサービスが処理できるかどうかを示す値を取得または設定します。 |
| CanHandleSessionChangeEvent |
ターミナル サーバー セッションから受信したセッション変更イベントをサービスが処理できるかどうかを示す値を取得または設定します。 |
| CanPauseAndContinue |
サービスを一時停止および再開できるかどうかを示す値を取得または設定します。 |
| CanRaiseEvents |
コンポーネントがイベントを発生できるかどうかを示す値を取得します。 (継承元 Component) |
| CanShutdown |
システムのシャットダウン時にサービスに通知する必要があるかどうかを示す値を取得または設定します。 |
| CanStop |
開始後にサービスを停止できるかどうかを示す値を取得または設定します。 |
| Container |
Componentを含むIContainerを取得します。 (継承元 Component) |
| DesignMode |
Componentが現在デザイン モードであるかどうかを示す値を取得します。 (継承元 Component) |
| EventLog |
Start や Stop などのサービス コマンド呼び出しの通知をアプリケーション イベント ログに書き込むのに使用できるイベント ログを取得します。 |
| Events |
この Componentにアタッチされているイベント ハンドラーの一覧を取得します。 (継承元 Component) |
| ExitCode |
サービスの終了コードを取得または設定します。 |
| ServiceHandle |
サービスのサービス コントロール ハンドルを取得します。 |
| ServiceName |
システムに対するサービスを識別するために使用する短い名前を取得または設定します。 |
| Site | (継承元 Component) |
メソッド
| 名前 | 説明 |
|---|---|
| CreateObjRef(Type) |
リモート オブジェクトとの通信に使用されるプロキシの生成に必要なすべての関連情報を含むオブジェクトを作成します。 (継承元 MarshalByRefObject) |
| Dispose() |
Componentによって使用されるすべてのリソースを解放します。 (継承元 Component) |
| Dispose(Boolean) |
ServiceBaseによって使用される (メモリ以外の) リソースを破棄します。 |
| Equals(Object) |
指定したオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
| GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
| GetLifetimeService() |
古い.
このインスタンスの有効期間ポリシーを制御する現在の有効期間サービス オブジェクトを取得します。 (継承元 MarshalByRefObject) |
| GetService(Type) |
ComponentまたはそのContainerによって提供されるサービスを表すオブジェクトを返します。 (継承元 Component) |
| GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
| InitializeLifetimeService() |
古い.
このインスタンスの有効期間ポリシーを制御する有効期間サービス オブジェクトを取得します。 (継承元 MarshalByRefObject) |
| MemberwiseClone() |
現在の Objectの簡易コピーを作成します。 (継承元 Object) |
| MemberwiseClone(Boolean) |
現在の MarshalByRefObject オブジェクトの簡易コピーを作成します。 (継承元 MarshalByRefObject) |
| OnContinue() |
派生クラスで実装すると、サービス コントロール マネージャー (SCM) によって Continue コマンドがサービスに送信されたときに、 OnContinue() が実行されます。 一時停止後にサービスが通常の機能を再開したときに実行するアクションを指定します。 |
| OnCustomCommand(Int32) |
派生クラスで実装すると、サービス コントロール マネージャー (SCM) がカスタム コマンドをサービスに渡すと、 OnCustomCommand(Int32) が実行されます。 指定したパラメーター値を持つコマンドが発生したときに実行するアクションを指定します。 |
| OnPause() |
派生クラスで実装された場合、Pause コマンドが Service Control Manager (SCM) によってサービスに送信されたときに実行されます。 サービスが一時停止したときに実行するアクションを指定します。 |
| OnPowerEvent(PowerBroadcastStatus) |
派生クラスで実装された場合は、コンピューターの電源状態が変更されたときに実行されます。 これは、ラップトップ コンピューターが中断モードになったときに適用されます。これは、システムのシャットダウンと同じではありません。 |
| OnSessionChange(SessionChangeDescription) |
ターミナル サーバー セッションから変更イベントを受信したときに実行されます。 |
| OnShutdown() |
派生クラスで実装されている場合は、システムがシャットダウンするときに実行されます。 システムがシャットダウンする直前に発生する必要のある処理を指定します。 |
| OnStart(String[]) |
派生クラスで実装されている場合は、Service Control Manager (SCM) によって Start コマンドがサービスに送信されたとき、またはオペレーティング システムが起動したときに実行されます (自動的に開始されるサービスの場合)。 サービスの開始時に実行するアクションを指定します。 |
| OnStop() |
派生クラスで実装されている場合は、サービス コントロール マネージャー (SCM) によって Stop コマンドがサービスに送信されたときに実行されます。 サービスの実行が停止したときに実行するアクションを指定します。 |
| RequestAdditionalTime(Int32) |
保留中の操作に対して追加の時間を要求します。 |
| RequestAdditionalTime(TimeSpan) |
このメソッドが OnStart、OnStop、OnPause、または OnContinue から呼び出されると、サービスが応答していないとマークされないように、指定された待機ヒントが Service Control Manager に渡されます。 |
| Run(ServiceBase) |
サービスの実行可能ファイルを Service Control Manager (SCM) に登録します。 |
| Run(ServiceBase[]) |
複数のサービスの実行可能ファイルを Service Control Manager (SCM) に登録します。 |
| ServiceMainCallback(Int32, IntPtr) |
コマンド ハンドラーを登録し、サービスを開始します。 |
| Stop() |
実行中のサービスを停止します。 |
| ToString() |
Componentの名前 (存在する場合) を含むStringを返します。 このメソッドはオーバーライドしないでください。 (継承元 Component) |
イベント
| 名前 | 説明 |
|---|---|
| Disposed |
コンポーネントが Dispose() メソッドの呼び出しによって破棄されるときに発生します。 (継承元 Component) |