Ich habe den folgenden Codeabschnitt, um Daten in eine XML-Datei zu schreiben.Fortschrittsbalken wird nicht aktualisiert
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;
}
}
}
Es verwendet den gleichen BackgroundWorker, der die Daten aus der Datenbank bezieht. Mein Fortschrittsbalken zeigt den Fortschritt korrekt an, während er aus der Datenbank liest. Nach dem Nullstellen des Fortschrittsbalkens für das XML-Schreiben liegt es jedoch einfach bei 0, obwohl der Prozess korrekt abgeschlossen wurde.
Kann jemand vorschlagen, warum?
Als eine Seite - Schreiben xml über Verkettung ist sehr gefährlich. Es wäre viel sicherer, XmlWriter zu verwenden - andernfalls wird das Entweichen ein großes Problem sein. –