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

タイトル 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

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

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