タイトル : Re^3: マルチスレッドについて 投稿日 : 2007/09/07(Fri) 15:54 投稿者 : 魔界の仮面弁士
BeginInvoke/Invoke メソッドを使いましょう。 > ですが実際には、表示させてる値が変わっているので > コントロールできているのですが・・・? 残念ながら、「コントロールできることもある」です。 成功する確率が、失敗する確率よりも高かっただけに過ぎません。 ワーカスレッドが TextBox を直接操作するようなことは厳禁です。 メインスレッドに TextBox の操作を依頼するのならば OK ですが。 これは別に、コントロールに限った話ではありません。 たとえば、Form1 上の Private cost As Integer な変数に対し、ワーカースレッドから、 cost += newValue のように、金額を newValue 円ずつ増やしていくような単純な処理さえも、 マルチスレッド処理では NG となります。 マルチスレッド処理では、(失敗するタイミングがシビアな)再現性の低いバグを 作りこんでしまう危険性が高いので、十分に注意してください。 # もし、VB.NET のマルチスレッド化に関する資料が必要なら。 # 下記の第7章あたりを読んでみると良いかも。 # http://www.amazon.co.jp/o/ASIN/4798102164 |