ホームページ >バックエンド開発 >C++ >ProgressBar を使用して進行状況を更新する BackgroundWorker を実装するにはどうすればよいですか?

ProgressBar を使用して進行状況を更新する BackgroundWorker を実装するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-09 18:51:43418ブラウズ

How to Implement a BackgroundWorker with Progress Updates Using a ProgressBar?

進行状況バーを使用してバックグラウンド ワーカーの進行状況を更新します

質問:

ProgressBar コントロールを使用して、進行状況を更新する BackgroundWorker を実装するにはどうすればよいですか?

答え:

ProgressBar の更新を使用して BackgroundWorker を正しく実装するには、次の手順に従います:

  • BackgroundWorker の DoWork イベントで、ReportProgress メソッドを使用して進捗状況を定期的に報告します。
  • ProgressChanged イベントで、ProgressBar の値を更新して、UI スレッド上で報告された進行状況を表示します。
  • BackgroundWorker の WorkerReportsProgress プロパティを true に設定して、進行状況レポートを許可します。
  • RunWorkerAsync メソッドを使用して、BackgroundWorker を非同期的に実行します。

以下は、ProgressBar コントロールを更新する単純な BackgroundWorker 実装の例です。

XAML コード:

<code class="language-xml"><ProgressBar Height="25" Margin="20" Maximum="50" Minimum="0" x:Name="myProgressBar"/></code>

バックエンドコード:

<code class="language-csharp">using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;

public partial class MainWindow : Window
{
    BackgroundWorker backgroundWorker = new BackgroundWorker();

    public MainWindow()
    {
        InitializeComponent();

        backgroundWorker.WorkerReportsProgress = true;
        backgroundWorker.ProgressChanged += BackgroundWorker_ProgressChanged;
        backgroundWorker.DoWork += BackgroundWorker_DoWork;

        backgroundWorker.RunWorkerAsync();
    }

    private void BackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
    {
        for (int i = 0; i < 50; i++)
        {
            System.Threading.Thread.Sleep(100); // 模拟工作
            backgroundWorker.ReportProgress(i);
        }
    }

    private void BackgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
        myProgressBar.Value = e.ProgressPercentage;
    }
}</code>

これらの手順に従うことで、GUI とシームレスに統合し、進行状況の最新情報をユーザーに提供する BackgroundWorker を作成できます。

以上がProgressBar を使用して進行状況を更新する BackgroundWorker を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。