マルチスレッドで動くGUIアプリのプログラムを書いていると、以下のようなエラーに出くわすことがある人が多いのではないでしょうか。 有効ではないスレッド間の操作:コントロールが作成されたスレッド以外のスレッドからコントロール textbox1がアクセスされました。 処理が重い!並列処理にしよう!⇒なんかエラーでた!⇒ググる⇒invoke使えばいいんだ! 過去の自分を含め、多分みんなこの流れで解決まではたどり着く。でも、何がだめだったのか、どうして改善できるのか、invoke, delegateとは一体何なのかという事までちゃんと理解する人はあまりいないと思う。 本記事では、まずは方法を示して、スレッド間の処理の移譲の仕組みを深堀してみる。 using System; using System.Collections.Generic; using System.ComponentModel;
![【C#】UIスレッド以外からUIのコントロールを操作する](https://cdn-ak-scissors.b.st-hatena.com/image/square/2895d70ff96f5130ac94d4af226d0533bdecaec4/height=288;version=1;width=512/https%3A%2F%2Fi1.wp.com%2Fhikotech.net%2Fwp-content%2Fuploads%2F2021%2F05%2FClogo.png%3Fresize%3D730%252C410%26ssl%3D1)