HIRO's.NET

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

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

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

HIRO's.NET RSSHIRO's.NET RSS


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

HOME > VB.NET 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 Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    '進捗状況を報告できるようにする
    Me.BackgroundWorker1.WorkerReportsProgress = True

    'プログレスバーの初期化
    Me.ProgressBar1.Minimum = 0
    Me.ProgressBar1.Maximum = 100
End Sub

'バックグランド処理実行用ボタンクリック時の処理
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    '進捗状況の初期化
    Me.ProgressBar1.Value = 0

    'バックグラウンド操作の実行を開始する
    Me.BackgroundWorker1.RunWorkerAsync()
End Sub

Private Sub BackgroundWorker1_DoWork( _
    ByVal sender As Object, _
    ByVal e As System.ComponentModel.DoWorkEventArgs) _
    Handles BackgroundWorker1.DoWork

    'バックグラウンドで実行する処理をここに記述します

    For I As Integer = 0 To 100
        '進捗状況の報告
        Me.BackgroundWorker1.ReportProgress(I)

        System.Threading.Thread.Sleep(100)
    Next

End Sub

'バックグラウンド操作の進捗状況を把握
Private Sub BackgroundWorker1_ProgressChanged( _
    ByVal sender As System.Object, _
    ByVal e As System.ComponentModel.ProgressChangedEventArgs) _
    Handles BackgroundWorker1.ProgressChanged

    '進捗状況をプログレスバーに表示
    Me.ProgressBar1.Value = e.ProgressPercentage
End Sub