Private Sub buttonYes_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles buttonYes.Click BackgroundWorker1.RunWorkerAsync() End Sub Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork Dim worker As BackgroundWorker = CType(sender, BackgroundWorker) todo_work(worker, e) End Sub Private Sub todo_work(ByVal worker As BackgroundWorker, ByVal e As DoWorkEventArgs) update() end sub Private Function update() ...... sql statement..... If Label1.InvokeRequired Then Label1.BeginInvoke(New MethodInvoker(AddressOf aaa) < first time Else Label1.Text = "update the masterfile" End If ...... sql statement..... If Label1.InvokeRequired Then Label1.BeginInvoke(New MethodInvoker(AddressOf bbb) < second time Else Label1.Text = "update the itemfile" End If ...... sql statement..... If Label1.InvokeRequired Then Label1.BeginInvoke(New MethodInvoker(AddressOf ccc) < third time Else Label1.Text = "complete update the masterfile" End If ...... sql statement..... If Label1.InvokeRequired Then Label1.BeginInvoke(New MethodInvoker(AddressOf ddd) < fourth time Else Label1.Text = "complete update the itemfile" End If end sub Private Sub aaa() < wirte first function time Labelupdate.Text = "update the masterfile"" Me.ProgressBar1.Value = 10 End Sub Private Sub bbb() < wirte second function time Labelupdate.Text = "update the itemfile"" Me.ProgressBar1.Value = 20 End Sub Private Sub ccc() < wirte third function time Labelupdate.Text = "complete update the masterfile"" Me.ProgressBar1.Value = 30 End Sub Private Sub ddd() < wirte fourth function time Labelupdate.Text = "complete update the itemfile"" Me.ProgressBar1.Value = 100 End Sub