2010-12-10 11 views
1

WP7アプリケーションのUIスレッドにアクセスするにはどうすればよいですか?
次のコードを使用しています。あなたはこのためにディスパッチャを使用することができますWP7 - UIスレッドにアクセスしますか?


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); 
    } 

答えて

11

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

ありがとうございました!それは最終的に動作します! :D – Vercas

+0

yw :) ../15char –

+2

このソリューションをありがとう:) Deploy.Current.Dispatcher.BeginInvoke を使用し、System.Threadingを使用しないように注意してください:) –

関連する問題