HIRO's.NET

VB.NET, C#, PowerShell Tipsサイト

 VB.NET, C#, PowerShellを使用しているエンジニアのためのサイト。

 基本的な使用方法から開発で役立つTipsまで幅広く取り扱っています。

HIRO's.NET RSSHIRO's.NET RSS


C# 2005の開発でお困りのことはありませんか?
そんな悩みは当サイトで解決!!

HOME > C# 2005 Tips > コントロール > BackGroundWorker Tips メニュー

03.バックグラウンド操作の進捗状況を把握する

UPDATE:2007/03/15 

<< 前のTips  次のTips >>

 

 バックグラウンド操作の進捗状況を把握するには、ReportProgressメソッドとProgressChangedイベントを使用します。下記手順でバックグラウンド操作の進捗状況を把握することができます。

1.進捗状況を報告できるようにするため、WorkerReportsProgressプロパティをtrueにします。

2.処理に時間のかかる箇所でReportProgressメソッドを呼び出します。 ReportProgressメソッドはProgressChangeイベントを発生させます。メソッドの引数には進捗状況を示す整数値を指定します。

3.ReportProgressメソッドで指定した値を、ProgressChangeイベントのe. ProgressPercentageで受け取ります。

サンプルでは、進捗状況をプログレスバーで表示しています。
新規プロジェクトを作成し、フォームに
Button 1つ, ProgressBar 1つ, BackGroundWorker 1つを貼り付け、サンプル1のように記述します。

 
サンプル
private void Form1_Load(object sender, EventArgs e)
{
    //進捗状況を報告できるようにする
    this.backgroundWorker1.WorkerReportsProgress = true;

    //プログレスバーの初期化
    this.progressBar1.Minimum = 0;
    this.progressBar1.Maximum = 100;
}

//バックグランド処理実行用ボタンクリック時の処理
private void button1_Click(object sender, EventArgs e)
{
    //進捗状況の初期化
    this.progressBar1.Value = 0;

    //バックグラウンド操作の実行を開始する
    this.backgroundWorker1.RunWorkerAsync();
}

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
    //バックグラウンドで実行する処理をここに記述します

    for (int i = 0; i <= 100; i++)
    {
        //進捗状況の報告
        this.backgroundWorker1.ReportProgress(i);

        System.Threading.Thread.Sleep(100);
    }
}

//バックグラウンド操作の進捗状況を把握
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
    //進捗状況をプログレスバーに表示
    this.progressBar1.Value = e.ProgressPercentage;
}