別のスレッドで別のクラスからラベルのテキストを更新しようとしています。他のクラスは、ここで処理されるイベントを発生させます
Private Sub handleChangeUI(ByVal sender As System.Object)
Dim ytde As Data_Entry_Form.YTD = CType(sender, Data_Entry_Form.YTD)
UpdateExcelLabel(ytde.LabelMessage)
End Sub
updateExcelLabel メソッドでは、ラベルのテキストを次のように変更したいと考えていました
Private Delegate Sub updateExcelDelegate(txt As String)
Public Sub UpdateExcelLabel(text As String)
If Me.lblExcel.InvokeRequired = True Then
Dim del As New updateExcelDelegate(AddressOf UpdateExcelLabel)
Me.lblExcel.BeginInvoke(del, text)
Else
Me.lblExcel.Visible = True
Me.lblExcel.Text = text
Me.lblExcel.Refresh()
End If
End Sub
何らかの理由で Me.lblExcel.InvokeRequired は常に true を返します。デリゲートとマルチスレッドに関しては、私はまだ非常に新しいので、どんな助けも大歓迎です。