2010-12-10 58 views
1

Comment accéder au thread UI d'une application WP7?
J'utilise le code suivant, si cela aide.WP7 - accéder au thread d'interface utilisateur?


private void LayoutRoot_Loaded(object sender, RoutedEventArgs e) 
    { 
     AcquireNews(l => { listBox1.Items.Add(l[0]); }); 
     // Here is where I get an exception saying "Invalid cross-thread access." 
    } 

    void AcquireNews(Action<List<object>> callback) 
    { 
     var r = HttpWebRequest.Create("http://www.google.com") as HttpWebRequest; 

     r.BeginGetResponse(result => 
      { 
       var response = r.EndGetResponse(result); 

       List<object> l = new List<object>(); 

       var s = response.GetResponseStream(); 

       var buffer = new byte[s.Length]; 

       s.Read(buffer, 0, (int)s.Length); 

       l.Add(System.Text.Encoding.UTF8.GetString(buffer, 0, buffer.Length)); 

       callback(l); 
      }, 
     null); 
    } 

Répondre

11

Vous pouvez utiliser le répartiteur pour cela.

Dispatcher.BeginInvoke(() => { /* Your UI Code - ie Callback() or listbox.items.add */ }); 
+0

Merci beaucoup! Cela fonctionne enfin! : D – Vercas

+0

yw :) ../15char –

+2

Merci pour cette solution :) N'oubliez pas d'utiliser le Deployment.Current.Dispatcher.BeginInvoke et pas System.Threading (comme je l'ai fait :) :) –