サービスに依存するGUIアプリケーション

[戻る]
NOR 2011/01/12(水) 11:18:30
Visual C++ 2008 MFCです。
DBなどのサービスを使用するGUIアプリケーションを
スタートアップに登録させている場合、サービス開始前に起動してしまい、
正しく動作しなくなる可能性があります。

サービス同士は依存関係を持たせることができるようですが、
このようなGUIアプリケーションをスタートアップに入れる場合、
サービス開始まで待たせる方法はあるのでしょうか?

AR 2011/01/12(水) 12:47:30
私はスタートアップのショートカットにコマンドラインオプションを付与し、サービス
が起動していなければ何度かリトライするモードを組み込んでます。

えーと 2011/01/12(水) 13:02:30
ここらへんが役に立つかも?
http://www.monyo.com/technical/windows/33.html

スタートアップスクリプトにするか、依存関係を
SpoolerかMessangerにするといいみたいです。

えーと 2011/01/12(水) 13:08:13
すみません
サービスを使用するアプリでしたね。

無視してください。

ITO 2011/01/12(水) 15:05:46
 僕だったら、
   ・APIは、自動的に起動する。
   ・フラグ、レジストリー等でサービスプログラムの起動を確認。
   ・起動が確認できたら、処理を継続。
   ・一定時間を超えてもサービスプログラムが起動しなければエラー終了。
      (原因が分かるとなお良い)
 にしますね。

aetos 2011/01/12(水) 17:49:32
DB などっていうことは、相手は自作のサービスではなく、例えば SQL Server サービス
だったりするのでしょうか。
つまりは、サービス側に同期機構を組み込むための改変ができないケース。
サービスが立ち上がったかどうかは QueryServiceStatusEx 関数で調べることができま
すが、ステータスが RUNNING ならば、SQL クエリが確実に成功する保証があるのでしょ
うか? 若干不安です。

NOR 2011/01/15(土) 12:00:19
[[解決]]
ARさん、えーとさん、ITOさん、aetosさん、解説ありがとうございます。

今回の件では、相手サービスはまさにSQL Serverです。
OS自身の機能では、サービス起動を待つような仕組みは無いのですね。

アプリケーション自身で一定時間待ちながら状態を調べるような処理を
組み込むようにしてみようかと思います。
ありがとうございます。

古いスレッドには追加発言できません。