0

我正在使用多个线程来执行某些进程,并且我想在进度条中显示总进度,那么如何以安全的方式执行 ProgressBar1.Increment(1)?

Public Sub thread1process()
    For i = 0 To t1.Rows.Count - 1
        t1.Rows(i)("cname") = "Thread1"
        t1.Rows(i)("PD") = i
        t1.Rows(i)("PDP") = i
        t1.Rows(i)("TPD") = i
        t1.Rows(i)("TPDP") = i
        ProgressBar1.Increment(1)
    Next
End Sub

Public Sub thread2process()
    For i = 0 To t2.Rows.Count - 1
        t2.Rows(i)("cname") = "Thread2"
        t2.Rows(i)("PD") = i
        t2.Rows(i)("PDP") = i
        t2.Rows(i)("TPD") = i
        t2.Rows(i)("TPDP") = i
        ProgressBar1.Increment(1)
    Next
End Sub

另外我将如何同时从多个线程中增加一个公共变量?

4

2 回答 2

1

如何以安全的方式执行 ProgressBar1.Increment(1)?

您可以使用InvokeForm 上的方法来编组主 UI 线程上的调用。

另外我将如何同时从多个线程中增加一个公共变量?

使用Interlocked.Increment方法。

于 2012-08-12T15:09:02.743 回答
0

理想情况下,您希望在主线程的不同线程上更新 GUI。后台工作线程应该适合你。

于 2012-08-12T15:08:47.320 回答