サブスレッドでコントロールを操作するには?
サブスレッド処理内でコントロールへアクセスすると例外が発生します。
これは、複数のスレッドからWindowsフォームコントロールへアクセスすると 競合状態やデットロックなどのバグが発生するためです。.NET Frameworkがスレッドセーフ でない方法でコントロールへのアクセスするとInvalidOperationException となります。 では、例外を発生されずにコントロールへアクセスするためにはどうするか? 下記のサンプルはInvokeメソッドを用いて、コントロールを生成したスレッドに処理を移し コントロールにアクセスしています。 テストコード
実はこのソース重要な欠点がありました。↓も読んでくれると嬉しいです。 [関連記事] サブスレッドでコントロールを操作するときの注意点
スレッド(Thread)
|