画面の切り替えをスムーズにするには?


だいあろぐ  2003-10-15 03:52:03  No: 109107

ファイル読込み(数万件)など重い処理を行う際に、プログレスバーを表示しているのですが、画面表示が重くて困っています。
たとえば、コモンダイアログでファイル名を指定し、(開くや保存)ボタンをクリック後に別のフォームでプログレスバーを表示します。
その際に、コモンダイアログの一部が画面から消えずに残ってしまいます。

ソースの書き方でうまくなりますでしょうか?


岡田 之仁  2003-10-15 03:58:04  No: 109108

う〜ん・・・この辺の手法としては、マルチスレッド化が効果的なのですが、
VBですか?  VB.NETですか?

VB.NETなら簡単に実現できますが・・・VB6の場合は、ホネかも
しれません・・・

要は、プログレスバーの描画時間と、他の画面更新の為のドローにCPUタイム
が割当られていない為、発生しているものだと思います。

コードの書き方で幾分かは改善できるとは思いますが、どんな書き方をされて
いるか解らないので、指摘のしようがありません・・・

以上。


ねろ  2003-10-15 07:39:37  No: 109109

プログレスバーの更新をファイル読み込みの1000件に一回位にして
DoEventsを入れたらどうでしょうか?


いちゆ  2003-10-15 18:01:50  No: 109110

個人的には、WinAPIのGetTickCountかTimerで500msに一回とかにしています。


だいあろぐ  2003-10-21 23:29:20  No: 109111

DB接続の場合、
接続中のダイアログをよく表示しますが、
メインのフォームがかくれず、微妙に残ります。
(はじめの質問と同じです)
このような場合もTimerとか使うのでしょうか?


ファン太  2003-10-22 22:17:46  No: 109112

ですね、時間が掛かる処理の場合DoEventsを定期的に呼ぶのはVBのお約束だと思います。(マルチタスク本来の考え方なら、プログレスバー等の更新だけでOSに制御が渡るべきなんですけどね)


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

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






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