J#/c#更新/GUIスレッドの更新
-
28-10-2019 - |
質問
単に進行状況バーを埋める機能があります。
private void FillProgressBar(ProgressBar bar, Color c, int percent)
{
int steps = 10;
bar.set_Value(0);
for (int i = 0; i < percent / steps; i++)
{
System.Threading.Thread.Sleep(100);
bar.set_Value((i+1)*10) + bar.get_Value());
this.Refresh();
}
}
GUIスレッド(マルチスレッドではなく)から召喚すると、ゆっくりとバーを埋めることが目的です。
しかし、価値は上昇しますが、それはそれをしていないようです。
特定のコントロールまたはフォーム全体を更新する方法に関する提案はありますか? PS:ご覧のとおり、this.refresh()も機能しませんでした。
解決
他のヒント
現在のコードはメインメッセージループを実行させないため、 WM_PAINT
一つ...
それを行うべきではなく、スレッドを使用し、タイマーを使用してください:UIをブロックしないでください。
使用しないでください Application.DoEvents
それは悪いプログラミングの練習であり、存在するべきではありません。
所属していません StackOverflow