WinForms 進行状況バーの更新を完了します
WinForms プログレス バーを使用して外部ライブラリで実行される計算の進行状況を表示する場合、プログレス バーを段階的に更新する効率的な方法を見つけることが重要です。
コード例に示すように、従来は、進行状況バーの PerformStep() メソッドが各計算後に呼び出され、前進するステップを示します。ただし、このアプローチは、外部メソッドで計算を実行する場合には機能しません。
この問題を解決するには、BackgroundWorker クラスの使用を検討してください。これにより、UI の応答性を維持しながら、時間のかかるタスクをバックグラウンドで実行できます。
BackgroundWorker を使用して進行状況バーを更新します
BackgroundWorker を使用すると、計算を UI スレッドから分離できます。以下に例を示します:
<code class="language-c#">private void Calculate(int i) { double pow = Math.Pow(i, i); } private void button1_Click(object sender, EventArgs e) { progressBar1.Maximum = 100; progressBar1.Step = 1; progressBar1.Value = 0; backgroundWorker.RunWorkerAsync(); } private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e) { var backgroundWorker = sender as BackgroundWorker; for (int j = 0; j < 100; j++) { Calculate(j); backgroundWorker.ReportProgress(j); } } private void backgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e) { progressBar1.Value = e.ProgressPercentage; }</code>
このコード内:
このアプローチにより、UI をブロックせずに計算を実行できるため、応答性の高いユーザー エクスペリエンスを確保しながら、進行状況バーを介して進行状況の更新が提供されます。
以上がバックグラウンド計算中に WinForms の進行状況バーを効率的に更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。