タイトル : Re^4: スレッドの分岐処理について 投稿日 : 2012/02/27(Mon) 20:43 投稿者 : rauichi
> > measureAは2項目の測定値を配列に格納し,2項目目の > > 測定値の格納後に測定値格納の通知(測定値格納1回目完了) > > > > measureBは1項目の測定値を配列に格納し,1項目目の > > 測定値の格納後に測定値格納の通知(測定値格納1回目完了) > > それぞれのスレッドは、スレッドセーフであることが保証されているでしょうか。 > > また、例外対策は実施されていますか? > http://gushwell.ldblog.jp/archives/23832333.html > > > >> わざわざToUpperして小文字を含む文字列と比較していますが,何か意図があるのでしょうか。 > > 文字列の大文字化には特に意図はありません. > ToUpper で大文字化された文字列が "kikaiA" や "kikaiB" と > 一致するはずは無いので、t や t1 のスレッドは > どうやっても実行されないように思えます。 > > # それ以前に、そもそも元のコードは文法違反な気が……。(^_^;) たびたび説明不測ですいません. スレッドを停止させるために, 設備エラーをわざと発生させて停止させる仕様になっています. たとえば,100回の測定を実施するように引数を指定した場合は, tのスレッドは90回目で意図した設備エラーと別の設備エラーで停止してしまう状況です. スレッドセーフや例外対策は実施した方がよいのでしょうか. できれば,VB2005での実施方法を教えていただけないでしょうか. よろしくお願いします. 初めに紹介したコードに間違いがあったので,訂正版を以下に示します. Public Sub measure(ByVal n As Integer) Dim s As Settings = Settings.GetSettings If (s.GetValue("Main","kikai").ToUpper = "KIKAIA") Then Dim t As New System.Threading.Thread(New System.Threading.ParameterizedThreadStart(AddressOf MeasureA)) t.isBackground = true t.Start(n) ElseIf (s.GetValue("Main","kikai").ToUpper = "KIKAIB") Then Dim t1 As New System.Threading.Thread(New System.Threading.ParameterizedThreadStart(AddressOf MeasureB)) t1.isBackground = true t1.Start(n) End If End Sub |