【发布时间】:2015-01-12 23:48:21
【问题描述】:
我尝试在循环中同步进度条并填充标签连续数字。但是我的标签比进度条更早完成。下图就是这种情况。
我使用第二个线程来完成这个漫长的过程。这是我的测试代码:
Public Class Form1
Dim watek As System.Threading.Thread
Public Sub New()
InitializeComponent()
Control.CheckForIllegalCrossThreadCalls = False
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
watek = New System.Threading.Thread(AddressOf DoSomething)
watek.Start()
End Sub
Private Sub DoSomething()
Dim i As Integer = 0
Dim max As Integer = 10000
ProgressBar1.Maximum = max
ProgressBar1.Step = 1
Do Until i > ProgressBar1.Maximum
ProgressBar1.PerformStep()
Label1.Text = i
i = i + 1
Loop
End Sub
End Class
这是我的问题 - 为什么会这样?为什么进度条与标签不同步?请问谁能给我解释一下?如何得到预期的结果?
【问题讨论】:
-
呃,永远不要这样做:
Control.CheckForIllegalCrossThreadCalls = False。只需阅读使用 BackgroundWorker。 -
或阅读委托 - 这就是您从差异线程访问控件的方式。
标签: .net vb.net multithreading winforms progress-bar