【发布时间】:2011-08-30 17:22:01
【问题描述】:
我以前见过这个问题,但我还没有看到适用于我的特定案例的问题的答案。我有一个在我的 VB 表单中运行的 BackgroundWorker,还有一个进度条和一些标签。我的表单上也有(如果重要的话)有一个 WebBrowser,但它不受线程的影响。
Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Dim ints As Integer = Int(InputBox("What number to start at?"))
Dim inte As Integer = Int(InputBox("What number to end at?"))
ToolStripStatusLabel1.Text = "0 / " & inte - ints
ToolStripProgressBar1.Maximum = inte
ToolStripProgressBar1.Minimum = ints
ToolStripProgressBar1.Style = ProgressBarStyle.Continuous
Try
For z As Integer = ints To inte
ToolStripProgressBar1.Value = z
ToolStripStatusLabel1.Text = z & "/" & inte
'do some stuff here
catch etc
next
当循环运行时,有时它会停止并且进度条消失。知道为什么吗? 顺便说一句,我在那里做的唯一一件事就是运行一个 httpwebrequest 并处理字符串。
【问题讨论】:
-
这段代码应该会引发 InvalidOperationException。不管你做了什么绕过它,你最好把它放回去。这在 Windows 中是非常非法的,绘画工件只是小问题。
标签: vb.net multithreading progress-bar