2

这听起来可能很愚蠢,但我无法访问另一个线程中的进度条。是的,我已经调用了它。看看这个:

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 类中的方法调用子 updateProgressBarCurrent 吗?我怎样才能解决这个问题?提前致谢。

4

1 回答 1

2

您是否使用表单的“默认实例”功能?多线程应用程序中的一种禁止使用!每个线程都有一个默认实例。因此,如果您Form1.DoSomething从另一个线程调用,您不会调用“您的”Form1,而是调用 Form1 的新(不可见,未显示)实例。

于 2012-11-15T14:17:35.847 回答