C# 计算的进度百分比未更新
我试图在标签中显示背景工作者的进度百分比值。我正在添加一个Aprox。数据表中有25K行。当我将Label.Text设置为e.ProgressPercentage时,它可以正常工作。但当我计算%值时,它保持不变。只有在工人完成后,标签才会更新为100%C# 计算的进度百分比未更新,c#,backgroundworker,C#,Backgroundworker,我试图在标签中显示背景工作者的进度百分比值。我正在添加一个Aprox。数据表中有25K行。当我将Label.Text设置为e.ProgressPercentage时,它可以正常工作。但当我计算%值时,它保持不变。只有在工人完成后,标签才会更新为100% progressCount = report.Rows.Count; foreach (DataRow r in report.Rows) {
progressCount = report.Rows.Count;
foreach (DataRow r in report.Rows)
{
rp.pName = r[1].ToString();
rp.batch = r[2].ToString();
rp.expr = r[3].ToString();
rp.stock = r[5].ToString();
rp.rate = r[6].ToString();
backgroundWorker2.ReportProgress(i, rp);
System.Threading.Thread.Sleep(2);
if(backgroundWorker2.CancellationPending)
{
e.Cancel = true;
backgroundWorker2.ReportProgress(0);
}
i++;
}
private void backgroundWorker2_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
metroProgressBar1.Minimum = 0;
metroProgressBar1.Maximum = progressCount;
stock st = new stock();
reportClass rp = (reportClass)e.UserState;
if(!backgroundWorker2.CancellationPending)
{
st.stockReport.Rows.Add(rp.pName, rp.batch, rp.expr, rp.stock, rp.rate);
metroProgressBar1.Value = e.ProgressPercentage;
int percn = (e.ProgressPercentage / progressCount) * 100;
metroLabel4.Text =percn.ToString();
}
}
很可能是将一个整数除以一个整数,结果是零。先将值转换为double,进行计算,然后将结果转换回int 更改:
int percn = (e.ProgressPercentage / progressCount) * 100;
致:
很可能是将一个整数除以一个整数,结果是零。先将值转换为double,进行计算,然后将结果转换回int 更改:
int percn = (e.ProgressPercentage / progressCount) * 100;
致:
您可能没有注册事件:backgroundWorker2.ProgressChanged+=new ProgressChangedEventHandler(backgroundWorker2\u ProgressChanged);您可能没有注册事件:backgroundWorker2.ProgressChanged+=new ProgressChangedEventHandler(backgroundWorker2\u ProgressChanged);