>>971
例外を書くときは例外メッセージを余すところ無く書くように。

で、WindowsのGUIにおいて、コントロールを作ったスレッド以外のスレッドからのコントロールの操作は、動作が「保証されない」。
だから別スレッドからコントロールを操作する場合、コントロールを作ったスレッドに操作を依頼するのが正しい。
それを実現するのがControl.Invoke/BeginInvokeメソッドだ。