DOBON.NET DOBON.NETプログラミング掲示板過去ログ

再描画について

  • 題名: 再描画について
  • 著者: 末永 慎一
  • 日時: 2012/06/11 10:11:51
  • ID: 30557
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[Windows XP C#]
分類:[.NET]

いつもお世話になり、ありがとうございます。
winアプリの開発で、計算やデータベース関連の処理で時間が掛かりそうな時、
progressBarと、Labelにカウント表示させ、進捗状況を表示させています。
カウントアップ後、フォーム等のUpdateメソッドを入れ試していますが、処理中に
別アプリをアクティブにすると、計算等の処理は正常に繰り返されますが、
progressBarと、Labelにカウント表示は別アプリをアクティブにした時点で止まったまま
となり、処理が終わってから再描画されます。

処理中に別アプリをアクティブにしても、progressBarや、Labelを再描画させる方法を
ご存知の方みえましたらアドバイスしていただけますでしょうか。
宜しくお願いいたします。
vs2005Pro
2012/06/11(Mon) 11:14:10 編集(投稿者)

■No30557に返信(末永 慎一さんの記事)
> winアプリの開発で、計算やデータベース関連の処理で時間が掛かりそうな時、
> progressBarと、Labelにカウント表示させ、進捗状況を表示させています。

時間のかかる処理を UI スレッドに担当させているのでは無いでしょうか。
ワーカースレッドを利用することを検討してみてください。

VS2005 なら、時間のかかる部分は BackgroundWorker に任せると良いでしょう。

処理自体は DoWork イベントで行い、その進捗状況を表示するのは、
ReportProgress メソッド(ワーカースレッドが状況を報告するためのメソッド)と
ReportProgress イベント(メインスレッドが進捗状況を表示するためのイベント)を
使うようにします。
http://www.atmarkit.co.jp/fdotnet/dotnettips/436bgworker/bgworker.html
http://homepage1.nifty.com/rucio/commu/ThreadDetail_ThreadId_8979.htm
  • 題名: Re[2]: 再描画について
  • 著者: 末永 慎一
  • 日時: 2012/06/12 17:48:35
  • ID: 30565
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
アドバイスしていただき、ありがとうございました。
解決いたしました。
今後とも皆様宜しくお願いいたします。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板