【发布时间】:2010-02-10 20:42:19
【问题描述】:
我有一个需要执行的 cmd 命令,当命令启动时,它开始填充进度条。当 cmd 命令完成后,进度条需要填充到 100。
这是我使用的代码,但是当progressbar.Value = 100 出现时它给了我一个错误。
Public Class Form1
Dim teller As Integer
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerProgressbar.Tick
teller += 1
ProgressBar1.Value = teller
If ProgressBar1.Value = ProgressBar1.Maximum Then
TimerProgressbar.Stop()
End If
End Sub
这是应用程序崩溃的另一个私有子中的拖曳命令
ProgressBar1.Value = 100
TimerProgressbar.Stop()
当我调试它并尝试它时,它崩溃了
ProgressBar1.Value = 100
但是当我在 Windows 7 下构建它时,它运行良好而没有崩溃,但是一些人报告我它在 Windows xp 系统上崩溃了。
VB 给了我一个关于 Cross Thread 的建议,但我不知道如何让它与它一起工作。
【问题讨论】:
-
您显示的不是“跨线程” - Windows.Forms.Timer 的 Tick 事件在 UI 线程上。您实际收到的错误是什么?
-
忘记了一些事情,我用 ProgressBar1.Value = 100 TimerProgressbar.Stop() 外的按钮启动进度条我确实收到了 IllegalOperationException 错误。带有指向交叉线程页面的链接。 Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button.Click TimerProgressbar.Start() End Sub
-
顺便说一句,它给出了 IllegalOperationException
标签: vb.net progress-bar multithreading