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) を実行するにはどうすればよいですか?

Invokeメイン UI スレッドで呼び出しをマーシャリングするために、フォームでメソッドを使用できます。

また、同時に複数のスレッドからパブリック変数を増やすにはどうすればよいですか?

メソッドを使用しInterlocked.Incrementます。

于 2012-08-12T15:09:02.743 に答える
0

メインとは別のスレッドで GUI を更新するのが理想的です。バックグラウンド ワーカー スレッドが機能するはずです。

于 2012-08-12T15:08:47.320 に答える