初めて作る.NET Windowsサービス:Visual Studio Magazine(3/7 ページ)
特にUIを持たずWindowsのバックグラウンドで動作する「Windowsサービス」。この特集では、実践的な開発手法レクチャーとして、.NETアプリケーションにモニタリング機能を提供するWindowsサービス作成方法を解説していく。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
リスト1の例では、可能な限りのイベントプロシージャ定義をオーバーライドすることで、Windowsサービスにおけるすべてのイベントに対して受け応えするようにしている。Start(開始)、Stop(停止)、Pause(一時停止)、Continue(再開)といったイベントに加え、次に示すカスタムコマンドプロシージャがあるという点にも注目してほしい。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
このプロシージャは、サービスが実行されている間、外部アプリケーションがサービスに対して整数値のコマンドを送れるようにするためのものだ。
また、このプロシージャでは戻り値を返すことができないわけは、プロセスとサービスとの通信で原始的な一方向のIPC接続利用が想定されているからだ。AppMonitorサービスの例では、アプリケーションからAppMonitorサービスに向けてモニタリングイベントを発行する手段を提供するためにOnCustomCommandを利用する。
ここでは話を簡単にするため、OnCustomCommandでは、受け取ったコマンドを試験的なログファイルに記録するだけにしてある。この例は、実環境に合わせて簡単に拡張できるだろう。例えば、データベースにモニタリング情報を保存するとか、メッセージキューにメッセージを送り込むといった具合だ。
ところで起動時には、パラメータをWindowsサービスに渡すこともできる。OnStartルーチンでは、引数として文字列の配列をとるという点に注目しよう。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
AppMonitorの例では、ログファイルの名前や位置を指定するのにパラメータを利用している。引数が渡されずにサービスが起動したときには、単純にルートディレクトリのファイルをログの記録に使っている。
サービスに対して引数を設定するには、MMCスナップインの[サービス]からサービスのプロパティを開き、[Start parameters](訳注:日本語版では[開始パラメータ])のテキストボックスにパラメータを入力する(画面2)。
画面2■Windowsサービスにパラメータを渡す。サービスが起動するときにパラメータを渡すには、AppMonitorサービスのプロパティページを使う。AppMonitorの例では、このパラメータを「C:\Windows\Monitor.txt」のように、サービスで用いるログファイルの場所を指定する場合に用いる
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
© Copyright 2001-2005 Fawcette Technical Publications