Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
_DoWork内でCombobox値取得について
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=8979#CommentId10813
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
かずき
 (社会人)
投稿日時
2009/2/22 19:35:57
>> DoWork 内では、「イベント引数」と「イベント内のローカル変数」以外の変数は、
>> 原則として使用禁止と思ってください。
> とおっしゃいましたが、
> ソース上システムに影響のないもので原則として使用禁止というのが分かりません。
> 何をもって原則として使用禁止なんでしょうか?
コントロールについては、ドキュメントに別スレッドから使ったらだめと書いてあるからです。
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.control.aspx
MSDNから引用:
コントロールのハンドルが既に作成されている場合、スレッド セーフであるメンバは、
BeginInvoke、EndInvoke、Invoke、InvokeRequired、および CreateGraphics だけです。
コントロールのハンドルがバックグラウンド スレッドで作成される前に
CreateGraphics を呼び出すと、無効なスレッド間の呼び出しが発生する可能性があります。
マルチスレッドのプログラミングについて調べられてみるのがいいと思います。
BackgroundWorkerは、簡単にマルチスレッドのプログラムが組めるようになる
機能を提供するクラスなので、やったら駄目なことや、気をつけることはマルチスレッドで
プログラミングするときと同じです。