投稿者 ビアンコ  (社会人) 投稿日時 2022/8/10 18:32:22
VS2013のVBで作られたWindows Formアプリを修正しています。
今回、とあるFormでBackGroundWorkerを使っているのですが、
ProgressChangedイベントで対象Form上のLabelのTextを書き換えようとすると、
デバッグ時に以下の初回例外メッセージが表示されます。

型 'System.InvalidOperationException' の初回例外が System.Windows.Forms.dll で発生しました
追加情報:有効ではないスレッド間の操作: コントロールが作成されたスレッド以外のスレッドからコントロール 'Label1' がアクセスされました。

具体的には、Label1.TextにProgressChangedのイベント引数に渡したStringを入れようとしています。

ProgressChangedイベントはForm(UI)スレッドで動作していると思っていて、
これで問題ないのだと思っているのですが、原因が思い当たりません。

試しに、ProgressChangedイベントをコメントアウトすると、RunWorkerCompletedイベントで
Formコントロール変数を参照しようとすると同様の初回例外メッセージが表示されます。
そもそも初回例外って何でしょうか?

また、デバッグではなく、ビルドしたexeを実行すると、上記問題は一切発生しません。