• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:BackgroundWorkerについて(C#))

BackgroundWorkerについて(C#)

このQ&Aのポイント
  • C#のBackgroundWorkerを使ったプログラムで、プログレスバーが終了する前に「終了」と表示されてしまう理由はなぜでしょうか?
  • Windows Form上にButtonとProgressBarを設置し、BackgroundWorkerを使用してプログレスバーを表示させるプログラムを作成しました。しかし、プログレスバーが終了する前に「終了」と表示されてしまいます。なぜこのような現象が起きるのでしょうか?
  • C#のBackgroundWorkerを使用したプログラムで、プログレスバーの状態が終了する前に「終了」と表示される理由を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

>プログレスバーが終了するまえに”終了”が出てしまいますが >これはどうしてでしょうか? 単純にタイミングの問題なんじゃないですかねぇ…。 >progressBar1.Value = e2.ProgressPercentage; でプログレスバーの値が書き換わりますが、再描画の指示がメッセージキューに積まれます。 で、その再描画を処理する前にRunWorkerCompletedが処理されてしまった。 ということかと。 実行している環境のスペック次第でそこら辺は変わるかも知れません。 # というかこちらではそんな事になりませんでしたし……。 MessageBox.Show()の前にprogressBar1.Update()とか入れてみたらどうなりますかね? # まあ、このタイミングで再描画強制できるかどうかは不明ですが。 # button1.Enabled = true;でのボタンの再描画は走っているみたいですからイケますかねぇ…。 あと……テストだからいいかも知れませんが、DoWorkでResult設定した方がいいんじゃないですかね。

すると、全ての回答が全文表示されます。

関連するQ&A