- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VC++)
VC++フォームアプリで重たい処理を別スレッドで実行し、プログレスバーに表示する方法は?
このQ&Aのポイント
- VC++フォームアプリで重たい処理を別スレッドで実行し、プログレスバーに表示する方法を教えてください。
- Form内で処理する場合はデリゲートを使用できますが、別の方法もあれば教えてください。
- 具体的には、フォームアプリのファイル(クラス)でフォームコンポーネントを操作し、処理中の経過をプログレスバーに表示したいです。
- みんなの回答 (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も実装したほうがいいでしょう …