Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 进度条未更新_C#_.net_Progress Bar_Backgroundworker - Fatal编程技术网

C# 进度条未更新

C# 进度条未更新,c#,.net,progress-bar,backgroundworker,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 =

我有以下代码将数据写入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;
            }
        }
    }
private void WriteResidentData()
{
整数计数=1;
status=“正在写入XML文件”;
foreach(站点中的站点)
{
尝试
{
//创建XML文件
StreamWriter writer=新建StreamWriter(路径+“\\sites\\”+site.title+“.xml”);
writer.WriteLine(“”);
writer.WriteLine(“”);
foreach(site.GetCustomers()中的常驻res)
{
bw.报告进度((计数/客户)*100);
writer.WriteLine(“\t”);
writer.WriteLine(“\t\t”+res.reference+”);
writer.WriteLine(“\t\t”+res.name+”);
writer.WriteLine(“\t\t”+res.address+”);
writer.WriteLine(“\t\t”+res.method+”);
writer.WriteLine(“\t\t”+res.cycle+”);
writer.WriteLine(“\t\t”+检查WebStatus(res.reference)+”);
writer.WriteLine(“\t”);
计数++;
}
writer.WriteLine(“”);
writer.Close();
}
捕获(例外情况除外)
{
lastException=ex;
}
}
}
它使用的是从数据库获取数据的同一个BackgroundWorker。“我的进度条”在从数据库读取时正确显示进度。但是,在将XML写入的进度条归零后,即使过程正确完成,它也只是停留在0


有人能提出原因吗?

可能是(计数/客户)被截断为零(两个整数之间的除法)?

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

任务完全完成时进度条是否已满


嗯,你在那里用的是bw。。。因此,这可能是您的backgroundworker流程。

我认为应该是(count*100)/客户,假设您希望完成百分比。

OP声明backgroundworker,并且工作线程上没有显示UI更新。我的钱在归零上(Johan的回答)。是的,GUI在工作完成时没有被更新。作为一种旁白,通过连接编写xml是非常危险的。使用XmlWriter会安全得多,否则逃逸将是一个大问题。当有人接受你的答案而不进行投票时,你不喜欢吗?