在for循环中报告进度 [英] Report progress inside for loop
本文介绍了在for循环中报告进度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在for循环内调用此代码,我需要这样做,因为进度取决于此for循环值.
I am calling this code inside a for loop and I need to do this since progress depends on this for loop value.
bgworker1.ReportProgress(k * count);
但是我收到一个例外:
this operation has already had operation completed called on it and further calls are illegal
我该如何解决?
private void bgworker1_DoWork(object sender, DoWorkEventArgs e)
{
for (k = 1; k <= tcount; k++)
{
bgworker1.ReportProgress(k * count);
}
}
private void bgworker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
}
private void bgworker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
bgworker1.ReportProgress(k * count);
}
推荐答案
可以解决此问题的一种方法是在独占的for循环中报告此唯一任务的进度,例如这样
One way you can tackle this is reporting progress in a exclusive for-loop for this only task, like this
private void bgworker1_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
for (int i = 1; i <= 100; i++)
{
if (worker.CancellationPending == true)
{
e.Cancel = true;
break;
}
else
{
//Insert your logic HERE
worker.ReportProgress(i * 1);
}
}
}
这篇关于在for循环中报告进度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文