|
2011/05/26(Thu) 16:13:55 編集(投稿者) 2011/05/26(Thu) 16:12:43 編集(投稿者)
■No59394 (shu さん) に返信
ご返信ありがとうございました。
Timerで監視間隔を1msごとにすることでフリーズしたような状態にならず、プログラムを 連続的な取り込み待ちを作ることが出来ました。 ありがとうございます。
もう一点ご質問がございます。 現在、BackGroundWorkerを利用してマルチスレッド化を計っているのですが、前に作成した プログラムに比べて若干タイムラグが存在しているような気がします。 下記に示す例のように「3つの動作を並列で行うプログラム」を作成したのですが、BackGround Workerを使う上での注意点はありますでしょうか?
【タイムラグがないと思われるプログラム(一部抜粋)】
Private Sub C1__Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles C1_.Click
Dim test1 As New System.Threading.Thread(AddressOf test_1) Dim test2 As New System.Threading.Thread(AddressOf test_2) Dim test3 As New System.Threading.Thread(AddressOf test_3)
test1.Start() test2.Start() test3.Start()
test1.Join() test2.Join() test3.Join()
End Sub
Private Sub test_1() *****実行プログラム1*****
End Sub
Private Sub test_2() *****実行プログラム2*****
End Sub
Private Sub test_3() *****実行プログラム3*****
End Sub
【タイムラグが生じているように感じるプログラム(一部抜粋)】
Private Sub C1__Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles C1_.Click
test1.RunWorkerAsync() test2.RunWorkerAsync() test3.RunWorkerAsync()
End Sub
Private Sub test1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles test1.DoWork *****実行プログラム1*****
End Sub
Private Sub test2_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles test2.DoWork *****実行プログラム2*****
End Sub
Private Sub test3_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles test3.DoWork *****実行プログラム3*****
End Sub
|