Stránka 1 z 1

Stahování XML souboru ze serveru v cyklu.

Napsal: úte bře 19, 2013 15:02
od mceza
Dělám na aplikaci, která načítá ze serveru XML s daty, rozparsuje je a na základě těch dat přidá piny do mapy.

Problém je však v tom, že bych potřeboval, aby se to celé načetlo a obnovilo znovu v nějakém intervalu (10s). V tuto chvíli moje řešení funguje tak, že to stahuji přes DownloadStringAsync(). To ale do cyklu uzavřít nejde, protože to pak hlásí "WebClient does not support concurrent I/O operations." - proč, to už chápu.

Jak to tedy upravit tak, aby po zapnutí aplikace naskočil cyklus, kde by se každých 10s ten xml soubor stáhl znovu? V současnoti to mám přibližně takto (pro jednoduchost dávám ořezaný kód):

Kód: Vybrat vše

public partial class MainPage : PhoneApplicationPage
{
  public WebClient client = new WebClient();
  
  public MainPage()
  {
      InitializeComponent();
      
      client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
      LoadData(client);
      
      void LoadData(WebClient client)
      {
        client.DownloadStringAsync(new Uri("http://url.zdrojoveho.xml"));
      }
  
      void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
      {
        string a = e.Result;
        XDocument doc = XDocument.Parse(a);
        var nejakyList = from xxxx in doc.Descendants("XML")
                          select (new nejakaTrida
                          {
                            //naplnit daty
                          });
        foreach (nejakaTrida in nejakyList)
        {
          //pridam pushPiny atd...
        }  
      }
    }                  
}
Několik hodin jsem hledal, zkoušel, avšak bez výsledku. Pomůže někdo?

Stahování XML souboru ze serveru v cyklu.

Napsal: úte bře 19, 2013 15:15
od steelspace
Udělal bych si Timer. Ten by nebyl auto-reset, ale restartoval by se znovu až po načtení dat (nebo chybě).
Tak nevznikne nový download pokud už nějaký jiný běží.
Ještě bych doporučil použít BackgroundWorker na tu část parsování dat. Tím se zamezí zabržďování GUI.

Stahování XML souboru ze serveru v cyklu.

Napsal: čtv kvě 11, 2017 8:06
od Titti
Pro zajištění aby do určitého místa nevstupovalo vicekrát, jsou nejlepši rešení Locky anebo Mutexy, záleží na konkretní implementaci.
pro více informaci:
https://msdn.microsoft.com/cs-cz/librar ... .110).aspx

Stahování XML souboru ze serveru v cyklu.

Napsal: čtv kvě 11, 2017 8:40
od SmetyCZ
Škoda že po 4 letech a tázající už tu nepůsobí.

Stahování XML souboru ze serveru v cyklu.

Napsal: čtv kvě 11, 2017 9:10
od Titti
:-) to jsem slepej... přehlidl jsem rok 2013, i to že "deaktivovaný účet"