外部プログラム呼び出し時、ExitCode取得のためのループによるCPU負荷を軽減させるには?

解決


みっちー  2004-08-06 02:05:32  No: 115416  IP: [192.*.*.*]

[VB6・WinXP]API関係

お世話になります。
わかりにくい題名で申し訳ありません。

プログラムからShell関数で外部プログラムを呼び出します。
呼び出したプログラムの終了を判定するために、
Do〜Loopで、GetExitCodeProcess APIを使っています。
このDo〜Loop処理のために、CPU負荷が100%となってしまいます。
これを回避するにはどのような方法がベストでしょうか。

私が考えた案として、Do〜Loopの代わりにTimerコントロールを使って、
500msや100ms間隔で終了を判定するようにしました。
これだとCPU負荷の問題は解決したのですが、
Timerコントロールを使うことによる問題はないでしょうか?

このよう処理を経験した方がいらっしゃいましたら、是非ご教授いただきたく思います。
よろしくお願いいたします。

編集    削除
nanashi  2004-08-06 02:48:05  No: 115417  IP: [192.*.*.*]

Do〜Loop中にSleepを挟んでみたらどうでしょうか?

編集    削除
Say  2004-08-06 02:49:42  No: 115418  IP: [192.*.*.*]

終了するまで待機するのなら
WaitForSingleObjectのほうがいいのでは?

WSH使うという手もありますが。

編集    削除
みっちー  2004-08-06 02:50:29  No: 115419  IP: [192.*.*.*]

書き忘れましたがSleepも使用しない方向で。

編集    削除
みっちー  2004-08-06 23:44:08  No: 115420  IP: [192.*.*.*]

Sayさん、回答ありがとうございます。
WaitForSingleObjectを使った場合、画面が白抜けしてしまいますよね。
結局それを防ぐためにDo〜LoopでDoEventsしなければなりません。

良い方法はないものでしょうか・・

編集    削除
みっちー  2004-08-07 02:16:29  No: 115421  IP: [192.*.*.*]

すいません。
過去ログを調べて解決しました。

編集    削除