對C#比較新,並且想嘗試與它一起使用某些第三方Web服務API。UnauthorizedAccessException:Silverlight應用程序(XAML/C#)中的無效跨線程訪問
這裏是XAML代碼
<Grid x:Name="ContentGrid" Grid.Row="1">
<StackPanel>
<Button Content="Load Data" Click="Button_Click" />
<TextBlock x:Name="TwitterPost" Text="Here I am"/>
</StackPanel>
</Grid>
,這裏是C#代碼
private void Button_Click(object sender, RoutedEventArgs e)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://api.twitter.com/1/users/show/keykoo.xml");
request.Method = "GET";
request.BeginGetResponse(new AsyncCallback(twitterCallback), request);
}
private void twitterCallback(IAsyncResult result)
{
HttpWebRequest request = (HttpWebRequest)result.AsyncState;
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(result);
TextReader reader = new StreamReader(response.GetResponseStream());
string strResponse = reader.ReadToEnd();
Console.WriteLine("I am done here");
TwitterPost.Text = "hello there";
}
我猜,這是由回調上比一個單獨的線程執行造成的事實UI?在C#中處理這些類型的交互的正常流程是什麼?
謝謝。
謝謝大家的回覆。 – PolandSpring 2010-08-09 17:06:08
另一種方法是使用this.Dispatcher 但這個鏈接對你很有幫助。 http://humrahimcs.wordpress.com/wp-admin/post.php?post=420&action=edit&message=6&postpost=v2 – DoNetDeveloper 2012-02-24 10:12:32
你爲什麼不接受Steve Willcock的回答? – 2012-09-01 15:04:53