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