■14458 / ) |
Re[3]: RunWorkerAsync(100)をForm_Loadで |
□投稿者/ まどか (447回)-(2008/02/19(Tue) 09:23:16)
|
この場合、見た目に動作していないように見えることと実際に動作していないことは異なります。 実際に動作しているかは、Console.WriteLineやブレークポイントで確認できます。 見た目ですが、処理が速いと最終結果だけが人間の目で確認できることがよくあります。 その目に見える状態もOSの負荷状況などにより毎回違います。 今回の場合もそういうことだと思います。 確実に進捗状況を提示したいなら、適当なSleepを入れたり、Refreshなどで描画を確実におこなう などの処理を入れることになります。
Loadはフォームが表示される前のイベントですので、描画すべきウィンドウが存在しません。 なので見た目に何も無いので確認することができないだけです。 Shownは初回表示直後に発生します。 しかし、イベントハンドラが終了するまではGUIスレッドは待機しています。 したがって、そこで書いた描画処理はイベントハンドラが抜けてから処理されます。 それをその場で見た目に反映する場合はRefresh等で強制描画させます。
たぶん、プログレスバーのValueを設定した後でプログレスバー.Refresh()をおこなえば改善されるのではと思います。
|
|