投稿者 かずき  (社会人) 投稿日時 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は、簡単にマルチスレッドのプログラムが組めるようになる
機能を提供するクラスなので、やったら駄目なことや、気をつけることはマルチスレッドで
プログラミングするときと同じです。