はじめまして、ひろです。
VisualBasicの初心者です。
メインスレッドから"BackgroundWorker"で、
別スレッドを作成し、別スレッドから
スタートアップフォームにあるテキストボックスを参照すると、
TextBox1.text="1" (メインスレッドからの参照の場合)
TextBox1.text=""(別スレッドからの参照の場合)
となり、別スレッドからですと"1"が参照ができません。
"1"を参照したい場合、もしくは書き換えたい場合
どのようにすればいいか、
わかる方がいましたら、教えてください。
よろしくお願いします。
環境:VisualBasic.NET 2008
No.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を調べてやったら、できました。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- その他(プログラミング・Web制作) Pythonについての質問です。 初心者ほやほやなのでお手柔らかにお願いします。 今手引きにそって入 2 2022/09/22 21:56
- Access(アクセス) Dlookupにエラーがでてしまう 1 2022/10/31 14:35
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- その他(プログラミング・Web制作) python質問 1 2023/08/14 11:54
- ネットワーク しばらくするとネットワークの参照ができなくなる 4 2023/06/17 16:56
- Excel(エクセル) こんにちは。ExcelのVLOOKUP関数のことで教えてください。 2 2022/05/07 11:33
- グループウェア slackについて取り急ぎ教えて頂きたいことがあります 2 2022/04/08 09:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スレッドの監視方法について
-
VC++スレッドの正しい終了のさ...
-
CWnd::OnTimerのスレッドの取得
-
特定のスレッドの破棄
-
スレッドにて同一メモリの書き...
-
WaitForSingleObjectの使い方に...
-
volatile の使い方
-
マルチスレッドの実行順序の制御
-
LinuxでDoEvents()同等機能
-
同一スレッドで、ロックをかけ...
-
pthread_cond_wait 取りこぼし?
-
VB2005 シリアル通信のClose処理
-
Windows上で、シグナル(SIGTERM...
-
Macターミナルで実行中のプログ...
-
VBAの配列サイズとメモリに関して
-
緯度、経度の 10進法と 60進法...
-
C言語で、メモリを解放しないで...
-
TCP/IP通信時のサーバーからの受信
-
バックグラウンドのプロセスの...
-
プログラミング ソースコード
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
WaitForSingleObjectの使い方に...
-
VC++スレッドの正しい終了のさ...
-
スレッドの監視方法について
-
スレッドの安全な終了のさせ方
-
スレッドにて同一メモリの書き...
-
Windows上で、シグナル(SIGTERM...
-
スレッドの終了の仕方
-
スレッドの終了はどうやるんで...
-
VB2005 シリアル通信のClose処理
-
マルチスレッドプログラミング...
-
.netアプリへのSendMessageでフ...
-
マルチスレッドについて
-
Linuxでスレッド優先度って変え...
-
Win32APIでのスレッド処理
-
pthread_cond_wait 取りこぼし?
-
LinuxでDoEvents()同等機能
-
C++ GUIのメッセージループ。
-
excelvbaでCreateThreadの動作
-
マルチスレッドの実行順序の制御
-
同一スレッドで、ロックをかけ...
おすすめ情報