• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VC++)

VC++フォームアプリで重たい処理を別スレッドで実行し、プログレスバーに表示する方法は?

このQ&Aのポイント
  • VC++フォームアプリで重たい処理を別スレッドで実行し、プログレスバーに表示する方法を教えてください。
  • Form内で処理する場合はデリゲートを使用できますが、別の方法もあれば教えてください。
  • 具体的には、フォームアプリのファイル(クラス)でフォームコンポーネントを操作し、処理中の経過をプログレスバーに表示したいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

ProgressBarを操作したいとなると Mainクラス側の処理関数に BackgroundWorker型とDoEventArgs型を引き渡してやる必要がありそうです BackgroundWorkerは中断処理と ReportProgressメソッドを使うため DoEventArgsは中断処理のCancelフラグを設定するためです funcを void Main::func(BackgroundWoker^ worker, DoEventArgs^ e) { ... do while( funcの終了条件 ) ... { ... ... if ( worker->CancellationPending ) { ... ... ... e->Cancel = true; ... ... ... break; ... ... } ... ... // 重い処理 ... } } といった具合になりそうです あと BackGroundWorkerのWorkerReportProgressとWorkerSupportCancellationをtrueに設定し ProgressChangedイベントをForm側に設置しましょう また RunWorkComplatedも実装したほうがいいでしょう …

関連するQ&A