繁体   English   中英

如何在 backgroundworker dowork 事件中按百分比报告进度?

[英]How to report progress by percentages in backgroundworker dowork event?

private void Bgw_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker = sender as BackgroundWorker;

            var filesl = GetFiles(@"D:\", "*.*").ToList();
            for(int i = 0; i < filesl.Count; i++)
            {
                FileInfo info = new FileInfo(filesl[i]);
                if (File.Exists(info.FullName))
                {
                    dic.Add(filesl[i], info.Length);
                }
                int progress = (int)(((float)(i + 1) / filesl.Count) * 100);
                worker.ReportProgress(progress, filesl[i]);

                Thread.Sleep(100);
            }
        }

它在worker.ReportProgress中报告列表中的项目很好,但变量int进度值始终为0。在这种情况下,filesl中有近40000个文件。

这是完全正确的。 由于文件的数量,该变量将返回“0”(0%),直到达到至少 400 个文件,然后计算将返回“1”(1%)。 如果您更精确地进行此计算(不转换为 INT),您将看到百分比是小数、0.005%、0.0075%...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM