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에 있습니다.
누구나 제안 할 수 있습니까?
연결을 통해 xml을 작성하는 것은 매우 위험합니다. XmlWriter를 사용하는 것이 훨씬 안전합니다. 그렇지 않으면 이스케이프 처리가 큰 문제가됩니다. –