tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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() で
# コーディングしてしまいました。

# まだ、ヘンな部分がありましたら、ご指摘ください。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。