- ベストアンサー
VisualBasic初心者のための別スレッドからのテキストボックス参照方法
- VisualBasicの初心者が別スレッドからテキストボックスを参照する方法について教えてください。
- 別スレッドからスタートアップフォームのテキストボックスを参照すると、値が正しく表示されない問題が発生します。
- VisualBasic.NET 2008の環境で、別スレッドからテキストボックスの値を参照する方法をご教示願います。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Delegateを使ってワーカーとメインの橋渡しをしましょう フォームクラスに Delegate Sub myGetText( ByRef sb as System.Text.StringBuilder) Delegate Sub mySetText( ByVal ss as String) を定義しておきます バックグランドワーカーからTextBox1へのアクセスするために以下の2つを定義します Public Sub GetText( byRef sb as System.Text.StringBuilder) if TextBox1.InvokeRequired then ' バックグランドワーカーから呼ばれた場合 dim d as new myGetText(AddressOf GetText) invoke( d, new Object(){ sb } ) else ' メインスレッドから呼ばれた場合 sb.Append( TextBox1.Text ) end if End Sub Public sub SetText( byVal ss as string ) if TextBox1.InvokeRequired then ' バックグランドワーカーから呼ばれた場合 dim d as new mySetText(AddressOf SetText) invoke( d, new Object(){ ss } ) else ' メインスレッドから呼ばれた場合 TextBox1.Text = ss end if End If といった具合です 呼び出し側のワーカースレッドでは Dim sb as New System.Text.StringBuilder() dim n as integer = 0 while n < 1000 GetText( sb ) n = sb.ToString n += 1 SetText( n.ToString ) WEnd
お礼
お礼申しあげるのを遅れて申し訳ありません。 ある事情で見れない環境になってしまっていました。 Delegateを調べてやったら、できました。 ありがとうございます。