Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
BackGroundWorkerを使った時の初回例外
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30787#CommentId85410
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
ビアンコ
 (社会人)
投稿日時
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を実行すると、上記問題は一切発生しません。