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

解決


みっちー  2004-08-06 02:05:32  No: 115416

[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

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


Say  2004-08-06 02:49:42  No: 115418

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

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


みっちー  2004-08-06 02:50:29  No: 115419

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


みっちー  2004-08-06 23:44:08  No: 115420

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

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


みっちー  2004-08-07 02:16:29  No: 115421

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加