2010-12-10 4 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를 사용할 수 있습니다.

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

정말 고마워요! 마침내 작동합니다! : D – Vercas

+0

yw :) ../15char –

+2

이 솔루션을 주셔서 감사합니다 :) Deploy.Current.Dispatcher.BeginInvoke 을 사용하고 System.Threading을 사용하지 않도록 기억하십시오 :) –