这可能听起来很愚蠢,但我无法在另一个线程中访问进度条。是的,我已经调用了它。看看:
Delegate Sub ProgressBarCallback(ByVal value As Integer, ByVal max As Integer)
Sub updateProgressBarCurrent(ByVal value As Integer, ByVal max As Integer)
If Me.progressBar_currentState.InvokeRequired = True Then
Dim d As New ProgressBarCallback(AddressOf updateProgressBarCurrent)
Me.progressBar_currentState.Invoke(d, New Object() {value, max})
Else
progressBar_currentState.Maximum = max
If value < max Then
progressBar_currentState.Value = value
progressBar_currentState.Refresh()
End If
End If
End Sub
我正在从类中的方法调用updateProgressBarCurrent()。看看调试器:
ProgressBar没有做任何事情。这是因为我从databaseHandler类中的方法调用sub updateProgressBarCurrent吗?我怎样才能解决这个问题? 提前谢谢。
答案 0 :(得分:2)
您是否在使用表单的“默认实例”功能?多线程应用程序中的No-Go!
EACH线程有一个默认实例。因此,如果您从另一个线程调用Form1.DoSomething
,则不会调用“您的”Form1,而是调用Form1的新(不可见,未显示)实例。