忍者ブログ
暇人おやじの暇なつぶやき
[69] [68] [67] [66] [65] [64] [63] [62] [61] [60] [59]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

■BackgroundWorkerコンポーネントについてのメモ

BackgroundWorkerはスレッド処理を行うコンポーネントであり
非常に簡単にスレッドを追加してくれます

またreportsprogressプロパティを設定することによりスレッドの進行内容の通知が確認できます
suportscancellationプロパティを設定することでスレッドの途中キャンセルも正確に行なえます

進行状況の通知を行なうには、実はアプリケーションで状態を通知する必要があります
これは、スレッド実行イベント(dowork)内にてchangeprogressイベントを呼び出します

次の例はフォームにボタン、テキストボックス、バックグランドワーカーを設置して簡単なスレッドの
テストを行なうものです

スレッドの実体である dowork イベントに
       Dim cnt As Integer = 0

        While cnt < 5
            System.Threading.Thread.Sleep(1000)
            cnt += 1
            BackgroundWorker1.ReportProgress(cnt)
        End While

進行状態を処理するイベント ProgressChanged に
        TextBox1.Text += "..."
        TextBox1.Text += e.ProgressPercentage.ToString
        TextBox1.Text += vbCrLf

そしてスレッドが終了時に通知されるイベント RunWorkerCompleted に
        TextBox1.Text += "End Of Thread!!"

起動させるために、ボタンに次のコードを
        BackgroundWorker1.RunWorkerAsync()

これで、簡単な確認が出来ます
ReportProgressに値(cnt)を渡していますが、これが進行状態のパーセンテージ値になり
実体のイベント ProgressChanged に e.ProgressPercentage として渡ることになります
実はパーセンテージ自体はアプリケーション側で対応しないとならず、この数値は実際の
パーセンテージを表しているわけでは無いのです


PR


トラックバック
この記事にトラックバックする:


忍者ブログ [PR]
カレンダー
08 2024/09 10
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
フリーエリア
最新CM
最新TB
プロフィール
HN:
忍者 シオ才
性別:
非公開
バーコード
ブログ内検索