tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^4: マルチスレッドについて
投稿日: 2007/09/07(Fri) 16:12
投稿者
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

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。