.NETによるWindowsサービスの開発メモ
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
] [
Twitter
]
開始行:
→[[OS関連]]
→.NETプログラミング
→WindowsAPI関連
#contents
-※ Visual Studio .NET 2005での開発として記述する
*参考にするヘルプ [#zc9adb08]
-Visual Stuidoプログラマーズガイドの「Windows サービス ア...
-ServiceBaseクラス
-ServiceProcessInstallerクラス
-ServiceInstallerクラス
-ServiceControllerクラス
*予備知識 [#nb46a995]
-動作アカウント
--既定では、サービスはシステム アカウントで実行されます。...
*Windowsサービス作成時のルール [#hdc6b89e]
**必須事項 [#e7856b2e]
-MainメソッドでServiceBase.Run()を呼ぶ必要がある(プロジ...
-インストールコンポーネントを必ず作成する必要がある(下で...
--※インストールコンポーネントとは、サーバーへのサービスの...
-ウインドウステーションが非I/Oなのでサービスからメッセー...
-サービスのクラス(ServiceBaseから派生したクラス)のServic...
**推奨事項 [#wa3587aa]
-エラー出力などはイベントログに対して行うのが望ましい
*サービスのインストールコンポーネントを作成するには [#m91...
-ソリューション エクスプローラで Service1.vb、Service1.cs...
-デザイナの背景をクリックして、サービスの内容ではなくサー...
-デザイナにフォーカスを置いた状態で右クリックし、[インス...
-既定では、2 つのインストーラを含むコンポーネント クラス...
-ProjectInstaller のデザイン ビューで、[serviceInstaller1...
-[プロパティ] ウィンドウで、[ServiceName] プロパティを <...
-[StartType] プロパティを Automatic に設定します。
-デザイナで、[serviceProcessInstaller1] をクリックします。
-[Account] プロパティを LocalService に設定します。これに...
-serviceInstaller1のServiceNameプロパティにセットした文字...
-【疑問】どうせやらないといけないならなぜ最初にテンプレか...
*サービスの動作定義 [#e8c899c3]
-以下のようなServiceBaseのメソッドをオーバライドする(ヘル...
-OnStart: サービスの実行を開始したときのアクションを示し...
-OnPause: サービスを一時停止したときの動作を示します。
-OnStop :サービスの実行を停止したときの動作を示します。
-OnContinue: 一時停止したサービスを再開したときの動作を...
-OnShutdown :実行中のサービスの、システムがシャットダウ...
-OnCustomCommand:サービスがカスタム コマンドを受信したと...
-OnPowerEvent:低電力モードやサスペンド モードなど、電源...
-OnStart()とOnStop()のオーバライドは必須。あとは任意
*OnStartで停止するには [#d86c0da4]
-ApplicationExceptionをthrowする
-参考URL:http://bbs.wankuma.com/index.cgi?mode=al2&namber...
*System.Windows.Forms.Timerのイベントはサービスでは使えな...
-参照URL:http://support.microsoft.com/kb/820639/ja
-サービスで一定間隔ごとになんらかの処理をしたい場合、タイ...
-Windows フォーム Timer コンポーネントは、 Windows フォー...
-この問題を解決するために、 System.Windows.Forms 空間から...
-…とあるのだがSystem.Timers.Timerにも実は問題があるとのこと
-参照URL:http://support.microsoft.com/kb/842793/ja
-Elapsedイベントハンドラの中でStop()メソッドを呼ぶとダメ...
-System.Threading.Timerを使えとのことだが、使いにくいので...
-[[サーバベースのタイマの概説>http://msdn.microsoft.com/j...
-タイマを使うのではなくスレッドを起こしてインターバル分Sl...
-参考:[[Windowsサービスで処理が実行されない>http://www.at...
*デバッグ方法 [#u49cb641]
-直接ステップインはできない。起動してからプロセスにアタッ...
-なので、ビジネスロジックはdllで作成して開発中はテストド...
*サービス用のセットアッププロジェクトの作り方 [#iffae3e0]
-ソリューションにセットアッププロジェクトを追加
-プロジェクトを右クリック→追加→プロジェクト出力ダイアログ...
-ダイアログでサービスのプロジェクトを選択
-ダイアログの一覧で「プライマリ出力」を選択→OK
-プロジェクトを右クリック→表示→カスタム動作→カスタム動作...
-カスタム動作エディタ上の「カスタム動作」を右クリック→カ...
-一覧の「アプリケーションフォルダ」を開き「XXXX(アクティ...
-プロジェクトをビルド
-以上で、セットアップと同時にサービスとして登録されるよう...
-ポイントはカスタム動作でプライマリ出力を追加するところの...
-このセットアップがあれば、InstallUtil.exeによるセットア...
終了行:
→[[OS関連]]
→.NETプログラミング
→WindowsAPI関連
#contents
-※ Visual Studio .NET 2005での開発として記述する
*参考にするヘルプ [#zc9adb08]
-Visual Stuidoプログラマーズガイドの「Windows サービス ア...
-ServiceBaseクラス
-ServiceProcessInstallerクラス
-ServiceInstallerクラス
-ServiceControllerクラス
*予備知識 [#nb46a995]
-動作アカウント
--既定では、サービスはシステム アカウントで実行されます。...
*Windowsサービス作成時のルール [#hdc6b89e]
**必須事項 [#e7856b2e]
-MainメソッドでServiceBase.Run()を呼ぶ必要がある(プロジ...
-インストールコンポーネントを必ず作成する必要がある(下で...
--※インストールコンポーネントとは、サーバーへのサービスの...
-ウインドウステーションが非I/Oなのでサービスからメッセー...
-サービスのクラス(ServiceBaseから派生したクラス)のServic...
**推奨事項 [#wa3587aa]
-エラー出力などはイベントログに対して行うのが望ましい
*サービスのインストールコンポーネントを作成するには [#m91...
-ソリューション エクスプローラで Service1.vb、Service1.cs...
-デザイナの背景をクリックして、サービスの内容ではなくサー...
-デザイナにフォーカスを置いた状態で右クリックし、[インス...
-既定では、2 つのインストーラを含むコンポーネント クラス...
-ProjectInstaller のデザイン ビューで、[serviceInstaller1...
-[プロパティ] ウィンドウで、[ServiceName] プロパティを <...
-[StartType] プロパティを Automatic に設定します。
-デザイナで、[serviceProcessInstaller1] をクリックします。
-[Account] プロパティを LocalService に設定します。これに...
-serviceInstaller1のServiceNameプロパティにセットした文字...
-【疑問】どうせやらないといけないならなぜ最初にテンプレか...
*サービスの動作定義 [#e8c899c3]
-以下のようなServiceBaseのメソッドをオーバライドする(ヘル...
-OnStart: サービスの実行を開始したときのアクションを示し...
-OnPause: サービスを一時停止したときの動作を示します。
-OnStop :サービスの実行を停止したときの動作を示します。
-OnContinue: 一時停止したサービスを再開したときの動作を...
-OnShutdown :実行中のサービスの、システムがシャットダウ...
-OnCustomCommand:サービスがカスタム コマンドを受信したと...
-OnPowerEvent:低電力モードやサスペンド モードなど、電源...
-OnStart()とOnStop()のオーバライドは必須。あとは任意
*OnStartで停止するには [#d86c0da4]
-ApplicationExceptionをthrowする
-参考URL:http://bbs.wankuma.com/index.cgi?mode=al2&namber...
*System.Windows.Forms.Timerのイベントはサービスでは使えな...
-参照URL:http://support.microsoft.com/kb/820639/ja
-サービスで一定間隔ごとになんらかの処理をしたい場合、タイ...
-Windows フォーム Timer コンポーネントは、 Windows フォー...
-この問題を解決するために、 System.Windows.Forms 空間から...
-…とあるのだがSystem.Timers.Timerにも実は問題があるとのこと
-参照URL:http://support.microsoft.com/kb/842793/ja
-Elapsedイベントハンドラの中でStop()メソッドを呼ぶとダメ...
-System.Threading.Timerを使えとのことだが、使いにくいので...
-[[サーバベースのタイマの概説>http://msdn.microsoft.com/j...
-タイマを使うのではなくスレッドを起こしてインターバル分Sl...
-参考:[[Windowsサービスで処理が実行されない>http://www.at...
*デバッグ方法 [#u49cb641]
-直接ステップインはできない。起動してからプロセスにアタッ...
-なので、ビジネスロジックはdllで作成して開発中はテストド...
*サービス用のセットアッププロジェクトの作り方 [#iffae3e0]
-ソリューションにセットアッププロジェクトを追加
-プロジェクトを右クリック→追加→プロジェクト出力ダイアログ...
-ダイアログでサービスのプロジェクトを選択
-ダイアログの一覧で「プライマリ出力」を選択→OK
-プロジェクトを右クリック→表示→カスタム動作→カスタム動作...
-カスタム動作エディタ上の「カスタム動作」を右クリック→カ...
-一覧の「アプリケーションフォルダ」を開き「XXXX(アクティ...
-プロジェクトをビルド
-以上で、セットアップと同時にサービスとして登録されるよう...
-ポイントはカスタム動作でプライマリ出力を追加するところの...
-このセットアップがあれば、InstallUtil.exeによるセットア...
ページ名: