2009-04-02 24 views
2

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になります。

誰もがなぜ示唆できますか?

+1

連結を介してXMLを書くことは非常に危険です。 XmlWriterを使用する方がはるかに安全です。そうでなければエスケープすることが大きな問題になります。 –

答えて

5

私はあなたが完全なパーセンテージが必要だったと仮定して、(count * 100)/ customersであるべきだと思います。

+1

誰かがアップグレートしないであなたの答えを受け入れると、あなたはそれを気に入っていませんか? –

6

(count/customers)はゼロ(2つの整数間の除算)に切り捨てられますか?

+0

私はこの回答に投票しました – RvdK

0

これはスレッディングと関係があります。あなたの仕事が完了しているのと同じスレッドであなたのGUIを更新しているからです。

タスクが完全に完了すると、プログレスバーがいっぱいになりますか?

Hmmmzz、あなたはそこにbwを使用しています...あなたのbackgroundworkerプロセスかもしれません。

+0

OPはBackgroundWorkerを示し、UI更新はワーカースレッドに表示されません。私のお金はゼロになっています(ヨハンの答え)。 –

+0

作業中にGUIが更新されていません。 – Bailz

関連する問題