次の方法で共有


ServiceBase クラス

サービス アプリケーションの一部として存在するサービスの基本クラスを提供します。 ServiceBase は、新しいサービス クラスの作成時に派生される必要があります。

この型のすべてのメンバの一覧については、ServiceBase メンバ を参照してください。

System.Object
   System.MarshalByRefObject
      System.ComponentModel.Component
         System.ServiceProcess.ServiceBase

Public Class ServiceBase
   Inherits Component
[C#]
public class ServiceBase : Component
[C++]
public __gc class ServiceBase : public Component
[JScript]
public class ServiceBase extends Component

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

サービス アプリケーションでサービス クラスを定義するときに、 ServiceBase から派生します。すべての有効なサービスが、 OnStart メソッドと OnStop メソッドをオーバーライドします。追加の機能については、サービス状態の変更に応じた特定の動作で OnPauseOnContinue をオーバーライドできます。

サービスは、ユーザー インターフェイスをサポートしない、長期間実行できる実行可能ファイルです。ログオンしたユーザー アカウントによってはサービスを実行できない場合があります。コンピュータにログオンしているユーザーがいない場合でも、サービスを実行できます。

既定では、サービスはシステム アカウントで実行されます。このシステム アカウントは、管理者アカウントとは異なります。システム アカウントの権限は変更できません。ただし、 ServiceProcessInstaller を使用して、サービスを実行するときに使用するユーザー アカウントを指定できます。

実行可能ファイルには、複数のサービスを格納できますが、サービスごとに個別の ServiceInstaller を格納する必要があります。 ServiceInstaller インスタンスは、システムにサービスを登録します。また、インストーラは、各サービスをサービス コマンドを記録するために使用できるイベント ログに関連付けます。実行可能ファイルの main() 関数は、実行するサービスを定義します。サービスの現在の作業ディレクトリは、実行可能ファイルが置かれているディレクトリではなくシステム ディレクトリです。

サービスを開始すると、実行可能ファイルが検索され、実行可能ファイル内にある該当サービスの OnStart メソッドが実行されます。ただし、実行可能ファイルを実行しても、サービスは実行されません。実行可能ファイルは、サービスを読み込むだけです。サービスには、サービス コントロール マネージャを使用してアクセス (開始、停止など) します。

実行可能ファイルは、サービスで最初に Start を呼び出すときに、 ServiceBase 派生クラスのコンストラクタを呼び出します。 OnStart コマンド処理メソッドは、コンストラクタが実行された直後に呼び出されます。コンストラクタは、サービスが読み込まれた初回にしか実行されません。このため、コンストラクタで実行される処理と OnStart で実行される処理を区別する必要があります。 OnStop によって解放できるリソースは、 OnStart で作成する必要があります。 OnStop がリソースを解放した後にサービスを再開すると、コンストラクタでリソースを作成しても適切に作成されません。

サービス コントロール マネージャ (SCM: Service Control Manager) を使用すると、サービスを対話形式で利用できます。SCM を使用して、Start、Stop、Pause、Continue の各コマンドまたはカスタム コマンドをサービスに渡すことができます。SCM は CanStop の値および CanPauseAndContinue の値を使用して、サービスが Stop、Pause、または Continue のいずれかのコマンドを受け入れるかどうかを判断します。Stop、Pause、および Continue は、対応するプロパティである CanStop または CanPauseAndContinue がサービス クラスで true である場合に限り、SCM のコンテキスト メニューで有効になります。有効な場合、コマンドはサービスに渡され、 OnStopOnPause 、または OnContinue が呼び出されます。 CanStopCanShutdown 、または CanPauseAndContinuefalse の場合は、対応するコマンド処理メソッド (OnStop など) を実装している場合でも、そのメソッドは処理されません。

ServiceController クラスを使用すると、ユーザー インターフェイスから SCM が実行する処理をプログラムから実行できます。コンソールで実行するタスクを自動化できます。 CanStopCanShutdown 、または CanPauseAndContinuetrue で、 OnStop などの対応するコマンド処理メソッドを実装していない場合、システムは例外をスローし、コマンドを無視します。

OnStartOnStop 、または ServiceBase の他のメソッドを実装する必要はありません。ただし、サービスの動作は OnStart に記述されているため、最低限、このメンバはオーバーライドされる必要があります。実行可能ファイルの main() 関数のサービス名を設定する必要があります。 main() で設定したサービス名は、サービス インストーラの ServiceName プロパティと完全に一致する必要があります。

InstallUtil.exe を使用して、システムにサービスをインストールできます。

メモ   アプリケーション イベント ログ以外のログはサービス呼び出しの通知を受け取るように指定できますが、 AutoLog プロパティと EventLog プロパティのいずれもカスタム ログへの書き込みができません。自動的にログを記録しない場合は、 AutoLogfalse に設定します。

必要条件

名前空間: System.ServiceProcess

プラットフォーム: Windows NT Server 4.0, Windows NT Workstation 4.0, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

アセンブリ: System.Serviceprocess (System.Serviceprocess.dll 内)

参照

ServiceBase メンバ | System.ServiceProcess 名前空間 | ServiceProcessInstaller | ServiceInstaller