既存サービスとの通信の概要
更新 : 2007 年 11 月
ServiceController コンポーネントを使用して、既存サービスに接続したり、既存サービスの動作を制御できます。ServiceController コンポーネントのインスタンスを作成する場合は、特定の Windows サービスとやり取りするように設定します。これによって、コンポーネントのインスタンスを使用してサービスの起動や停止などの操作を行うことができるようになります。たとえば、ServiceController コンポーネントを作成し、Timer コンポーネントと連携させて定期的にサービスを起動したり停止できます。
ServiceController コンポーネントはさまざまな用途に適用できます。以下に例を示します。
接続しているサービスの起動、停止、一時中断などのサービスが応答できる管理アクションをすべて実行できます。詳細については、「方法 : サービスに対して管理タスクを実行する」を参照してください。
コンポーネントとやり取りするサービスのさまざまなプロパティを問い合わせることで、プロパティの値を取得できます。たとえば、CanStop プロパティと CanPauseAndContinue プロパティの値を取得して、サービスの停止、一時中断、および継続ができるかどうかを判定できます。
特定のコンピュータに存在するサービスの一覧を取得できます。
サービスに対して実行するカスタム コマンドを指定できます。カスタム コマンドの詳細については、MSDN オンラインを参照してください。
ServiceController コンポーネントは、アクションに対する要求をサービスそのものではなく、Services Control Manager に渡します。Services Control Manager では、その指示に従って、サービスの停止、起動、一時中断などのアクションを実行します。ServiceController は、Services Control Manager に要求を渡すと、Services Control Manager からサービスに要求が渡されるのを待たずに、すぐに制御を戻します。このため、例外処理を行う場合は、ServiceController クラスではなくサービス クラスそのもので行うことをお勧めします。
メモ : |
---|
一般に、同じプロジェクトに含まれているサービスを操作するために ServiceController コンポーネントを Windows Service アプリケーションに追加することはお勧めできません。サービスを作成するプロジェクト内のコードでは、そのサービスを制御できません。ほかのコンテキストから制御する必要があります。 |