1
処理する数値(ここでは数値で書いた)が取った時間に応じてプログレスバーを更新しようとしています。progressBar最後に呼び出された値を更新するだけです
public static void updateProgress(int x)
{
Program.f.progressBar1.Visible = true;
Program.f.progressBar1.Enabled = true;
Program.f.progressBar1.Value +=x;
Thread.Sleep(5000);
}
上記のfnは、プログレスバーの更新に使用されます。
public static Form1 f;
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
f = new Form1();
f.progressBar1.Maximum = 100;
f.progressBar1.Minimum = 0;
f.progressBar1.Value = 0;
updateProgress(25); //fn1
updateProgress(50); //fn2
Application.Run(f);
}
進捗バーには75%の進捗状況が直接表示されます。 おかげ
フォームを表示する前に 'updateProgress()'呼び出しを削除します( 'Application.Run()'を呼び出すと表示されます)。例えば。 'updateProgress(25)'を呼び出す 'Click'イベントハンドラのフォームにボタンを追加します。通常、進行中のものは何が並列に実行されているか(例えば別のスレッド)、['Timer'](https://msdn.microsoft.com/en-us/library/system.windows.forms)を使って進めることができます。タイマー(v = vs.110).aspx)。 – Sinatr
Application.Run()の後に呼び出された場合、進捗状況が表示されません。 – hrnjan
Thread.Sleepは、現在のスレッドでの除外をブロックします。可能であれば、バックグラウンドワーカーまたは非同期/待機パターンを使用してみてください。 – user6144226