我的窗體上有一個進度條沒有更新。Backgroundworker ReportProgress發射但ProgressBar不會改變
當點擊發送電子郵件按鈕我這樣做:
Public Sub SendMail()
If CheckSettings() = False Then Exit Sub
BackUpEbillFile()
LockForm(True)
StatusBars(1, "Sending emails...")
ProgressBar1.Maximum = intInvoicesToSend
BackgroundWorker1.RunWorkerAsync()
End Sub
我有以下事件:
Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
e.Result = SendBills()
End Sub
Private Sub BackgroundWorker1_ProgressChanged(sender As Object, e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
Console.WriteLine("I DID IT MA!!!!1 status: " & ProgressBar1.Value)
ProgressBar1.PerformStep()
Console.WriteLine("I DID IT MA!!!!2 status: " & ProgressBar1.Value)
End Sub
在SendBills,這是一個郵件類,我這樣做:
smtp.Send(msg)
Console.WriteLine("I DID IT PA!!!! count: " & iCount)
frmBilling.BackgroundWorker1.ReportProgress(iCount)
我的問題在於ProgressChanged中的ProgressBar1.PerformStep()。我正在改變進度,但Progressbar1沒有改變。它保持在零。
- intInvoicesToSend是16
- ProgressBar1.Minimum = 0
- ProgressBar1.Maximum = intInvoicesToSend(這是16)
- ProgressBar1.Step = 1
下面是從我的控制檯console.writelines:
I DID IT PA !!!!數:0
我做到了MA !!!! 1種狀態:0
我做到了MA !!!! 2種狀態:1
我做到了PA !!!!數:1
我做到了MA !!!! 1種狀態:1
我做到了MA !!!! 2個狀態:2
我做到了PA !!!!數:2
我做到了MA !!!! 1個狀態:2
我做到了MA !!!! 2種狀態:3
我做到了PA !!!!數:3
我做到了MA !!!! 1種狀態:3
我做到了MA !!!! 2種狀態:4
誰能告訴我什麼,我做錯了什麼? 謝謝!
爲什麼退貨在這裏不起作用?我把intInvoicesToSend是16 ProgressBar1.Minimum = 0 ProgressBar1.Maximum = intInvoicesToSend(它是16)ProgressBar1.Step = 1所有在不同的行... – ErocM
你需要2返回(之間的空白行),或格式不同(作爲我做了我的編輯,並把它們放在一個列表中,因爲我認爲它更容易閱讀......) –
LockForm似乎工作得很好,無論它做什麼。 –