マルチスレッド[ VB.NET 2005 ]
VB.NET 2005
VC++で作成した通信DLLをマルチスレッドで呼び出すプログラムを作成しています。
マルチスレッドについてご質問です。
----------------------------------------------------------------
Private Sub ThreadMethod(ByVal aiIndex As UInt32)
fSockInit() ← スレッドスタートなので別スレッドで動く
End Sub
'**************************************************
' フォームロード
'**************************************************
Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
wkThread(Index) = New Thread(New ThreadStart(AddressOf ThreadMethod))
wkThread(Index).Start()
End Sub
'**************************************************
' 接続ボタン押下
'**************************************************
Private Sub btConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btConnect.Click
fConnect() ← スレッドを指定して動かしたい
End Sub
'**************************************************
' パラメータ設定ボタン押下
'**************************************************
Private Sub btParm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btParm.Click
fParmSet() ← スレッドを指定して動かしたい
End Sub
----------------------------------------------------------------
上記の例では、fSockInitはスレッド別に動作しますが、fConnect、fParmSetはメインスレッドで動作するようになっています。
frmMain_Loadで作成したスレッドを指定(※1)して関数を呼び出すことは出来ないのでしょうか?
※1.「クリックイベント(メインスレッド)→実行するスレッドを指定→関数呼び出し→メインスレッドに戻す」の様に。。。