-2
UIの進行状況バーがありますが、各機能の実行が終了するまで進捗状況を変更したいと思います。私はバックグラウンドワーカーで試してみました。私はbackgroundworker_dowork関数を使って実装しようとしています。どのように私は私の進行中の機能とそれを同期することができます。今すぐ仕事はちょうど最初の進歩を取る。どのように私は関数の実行ごとにそれを増やすことができます。c#バックグラウンドワーカーのプログレスバー
private void Ok_Button_Click(object sender, EventArgs e)
{
//set max sixe of progress bar
elementForm.progressBar1.Maximum = 100;
//// To report progress from the background worker we need to set this property
elementForm.backgroundWorker1.WorkerReportsProgress = true;
//// This event will be raised on the worker thread when the worker starts
elementForm.backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork);
//// This event will be raised when we call ReportProgress
elementForm.backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged);
elementForm.backgroundWorker1.RunWorkerAsync();
method1();
progress=10;
method2();
progress=20
method3();
lastmethod();
progress=100;
}
基本的に進捗状況は、メソッドの実行に伴って増加する必要があります
私のコードは次のようなものです。すべての方法は進行を増やすべきことをしており、進行と呼ばれる最後の方法が100%になるはずです。 backgroundWorker1_DoWorkため
コード(私はメソッドの完了と進行増分を同期するには、ここで何をすべきか)backgroundWorker1_ProgressChangedため
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
if (elementForm.progressBar1.Value < elementForm.progressBar1.Maximum)
{
while(progress!=100)
{
elementForm.progressBar1.Increment(progress);
elementForm.progressBar1.CreateGraphics().DrawString(progress.ToString() + "%", new Font("Arial", (float)8.25, FontStyle.Regular), Brushes.Black, new PointF(elementForm.progressBar1.Width/2 - 10, elementForm.progressBar1.Height/2 - 7));
}
}
}
コード:すべてのコメントについて
private void backgroundWorker1_ProgressChanged(object sender,
ProgressChangedEventArgs e)
{
if (elementForm.InvokeRequired)
{
elementForm.Invoke(new Action<object, ProgressChangedEventArgs>(backgroundWorker1_ProgressChanged), sender, e);
return;
}
// The progress percentage is a property of e
elementForm.progressBar1.Value = e.ProgressPercentage;
}
あなたのしたことを示すコードを挿入してください。 – active92
あなたのコードを教えてください! – Enigmativity
右の関連する列を見てください。このサイトには数十もの同様の質問があります。何があなたの質問を変えるのですか? –