进度条不更新

时间:2009-04-02 12:20:31

标签: c# .net progress-bar backgroundworker

我有以下代码将数据写入XML文件。

private void WriteResidentData()
{
    int count = 1;
    status = "Writing XML files";
    foreach (Site site in sites)
    {
            try
            {
                //Create the XML file
                StreamWriter writer = new StreamWriter(path + "\\sites\\" + site.title + ".xml");
                writer.WriteLine("<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>");
                writer.WriteLine("<customer_list>");

                foreach (Resident res in site.GetCustomers())
                {
                    bw.ReportProgress((count / customers) * 100);
                    writer.WriteLine("\t<customer>");
                    writer.WriteLine("\t\t<customer_reference>" + res.reference + "</customer_reference>");
                    writer.WriteLine("\t\t<customer_name>" + res.name + "</customer_name>");
                    writer.WriteLine("\t\t<customer_address>" + res.address + "</customer_address>");
                    writer.WriteLine("\t\t<payment_method>" + res.method + "</payment_method>");
                    writer.WriteLine("\t\t<payment_cycle>" + res.cycle + "</payment_cycle>");
                    writer.WriteLine("\t\t<registered>" + CheckWebStatus(res.reference) + "</registered>");
                    writer.WriteLine("\t</customer>");
                    count++;
                }

                writer.WriteLine("</customer_list>");
                writer.Close();
            }
            catch (Exception ex)
            {
                lastException = ex;
            }
        }
    }

它使用从数据库获取数据的相同BackgroundWorker。我的进度条在从数据库中读取时正确显示进度。但是,在将XML写入的进度条归零后,即使进程正确完成,它也只是位于0。

任何人都可以建议为什么?

3 个答案:

答案 0 :(得分:6)

可能是(count / customers)被截断为零(两个整数之间的划分)?

答案 1 :(得分:5)

我认为应该是(数* 100)/客户,假设你想要一个百分比完成。

答案 2 :(得分:0)

这与线程有关。因为您在与工作完成相同的线程中更新GUI。

任务完全完成后,进度条是否填满?

嗯,你在那里使用bw ......所以这可能是你的背景工作过程。