BackgroundWorker的使用方法:

jk: 這個物件可以在桌機環境上創造第二執行緒工作環境 也可對應給 進度bar
但是jk認為 這個基本上只適合用來處理介面執行緒間的雜務
真正要跑多執行緒程式 請參照關鍵字 THREAD , address of
但是多執行緒作偵錯上很麻煩....

參考自 :
https://www.dotblogs.com.tw/billchung/archive/2009/05/29/8592.aspx

'----------------------------------------------

Public Class Form1

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

'------檢查進度回報bar--------------------
Dim i As Integer
For i = 1 To 100
BackgroundWorker1.ReportProgress(i) ' <==呼叫ReportProgress方法以引發ProgressChanged事件,參數為百分比的分子部份。
System.Threading.Thread.Sleep(1000)
Next
'-------/檢查進度回報bar/---------------------


End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
BackgroundWorker1.WorkerReportsProgress = True '讓progressBAR起作用

If BackgroundWorker1.IsBusy = True Then
MessageBox.Show("背景作業執行中,請稍候!")
Else
Label1.Text = "開始於:" & Now().ToString("HH:mm:ss.fffffff")
BackgroundWorker1.RunWorkerAsync()
Label2.Text = "Click事件結尾:" & Now().ToString("HH:mm:ss.fffffff")
End If
End Sub



Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
ProgressBar1.Value = e.ProgressPercentage '<==依據ReportProgress方法的傳入參數改變Progressbar的Value
Label3.Text = "進度i=" & e.ProgressPercentage & "/ 時間:" & Now.ToString("HH:mm:ss.fffffff") '<==顯示每一次ProgressBar改變的時間
End Sub

Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
Label4.Text = "結束於:" & Now().ToString("HH:mm:ss.fffffff")
End Sub
End Class
創作者介紹
創作者 prague12 的頭像
prague12

prague12

prague12 發表在 痞客邦 留言(0) 人氣( 12 )