UI에 진행률 표시 줄이 있습니다. 끝날 때까지 각 기능의 실행과 함께 진행 상황을 변경하고 싶습니다. 나는 배경 작업자와 노력했다. backgroundworker_dowork 함수를 사용하여 구현하려고합니다. 진행중인 기능과 어떻게 동기화 할 수 있습니까? 지금 당장은 초기 진보가 필요합니다. 함수를 실행할 때마다 어떻게 증가시킬 수 있습니까?# backgroundworker가있는 진행 표시 줄
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
오른쪽에있는 관련 칼럼을보십시오. 이 사이트에는 수십 개의 유사한 질문이 있습니다. 무엇이 당신의 질문을 다른 것입니까? –