C#のプログレスバーと処理を同期する方法

C#では、BackgroundWorker コンポーネントを使用してプログレス バーとアプリケーションを同期させることができます。以下に簡単な例を示します。

まず、デザインビューでBackgroundWorkerコンポーネントをフォームに配置します。

次に、下記のコードをコードに追加します。

using System;
using System.ComponentModel;
using System.Windows.Forms;

namespace ProgressBarDemo
{
    public partial class MainForm : Form
    {
        private BackgroundWorker backgroundWorker;

        public MainForm()
        {
            InitializeComponent();

            // 初始化BackgroundWorker组件
            backgroundWorker = new BackgroundWorker();
            backgroundWorker.WorkerReportsProgress = true;
            backgroundWorker.DoWork += backgroundWorker_DoWork;
            backgroundWorker.ProgressChanged += backgroundWorker_ProgressChanged;
            backgroundWorker.RunWorkerCompleted += backgroundWorker_RunWorkerCompleted;
        }

        private void startButton_Click(object sender, EventArgs e)
        {
            // 启动BackgroundWorker组件
            backgroundWorker.RunWorkerAsync();
        }

        private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            // 在这里执行耗时操作
            for (int i = 0; i <= 100; i++)
            {
                // 报告进度
                backgroundWorker.ReportProgress(i);

                // 模拟耗时操作
                System.Threading.Thread.Sleep(100);
            }
        }

        private void backgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            // 更新进度条的值
            progressBar.Value = e.ProgressPercentage;
        }

        private void backgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            // 耗时操作完成后的处理
            MessageBox.Show("操作完成!");
        }
    }
}

上記のサンプルでは、startButton をクリックすると、時間のかかる処理を実行するための BackgroundWorker コンポーネントが起動します。DoWork イベント ハンドラーでは、ReportProgress メソッドを使用して進捗状況を報告します。ProgressChanged イベント ハンドラーでは、進行状況バーの値を更新します。RunWorkerCompleted イベント ハンドラーでは、時間のかかる処理完了後の処理を実行します。

そうしたら、プログレスバーが進行に同期するよ。

bannerAds