在for循环中报告进度 [英] Report progress inside for loop

查看:190
本文介绍了在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆