タイトル : Re^4: マルチスレッドでコントロールを操作する方法 投稿日 : 2007/09/14(Fri) 10:20 投稿者 : ちゃら
あらかじめ WorkerReportsProgress を True に設定しておき、 Me.Invoke(New DelegateGridRefresh(AddressOf GridRefresh), New Object() {i, "xxxx"}) ↓ worker.ReportProgress(1, New Object() {i, "xxxx"}) # 第一引数 (percentProgress) は適当な値 (1) Private Sub GridRefresh(ByVal row As Integer, ByVal value As String) .... End Sub ↓ Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As Object, _ ByVal e As System.ComponentModel.ProgressChangedEventArgs) _ Handles BackgroundWorker1.ProgressChanged Dim obj() As Object = TryCast(e.UserState, Object()) Dim row As Integer = CInt(obj(0)) Dim value As String = obj(1).ToString MainTable.Rows(row)("column1") = value End Sub とすることで出来ました。 userState ってこういう時の為に使用するのですね。 ありがとうございました。 # Integer 型と String 型のクラスを作ると # ファイルも増える為、とりあえず Object() で # コーディングしてしまいました。 # まだ、ヘンな部分がありましたら、ご指摘ください。 |