一個「MessageBox的」我有這樣的一段代碼在我的Silverlight項目:unauthorizedaccessexception用於在Silverlight
private void button1_Click(object sender, RoutedEventArgs e)
{
string baseUri = "http://foo.bar";
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(new Uri(baseUri));
request.BeginGetResponse(new AsyncCallback(ReadCallback),request);
}
private void ReadCallback(IAsyncResult asynchronousResult)
{
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
using (StreamReader streamReader1 = new StreamReader(response.GetResponseStream()))
{
string resultString = streamReader1.ReadToEnd();
MessageBox.Show(resultString);
}
}
當我運行代碼,我得到以下異常:
unauthorizedaccessexception
Invalid cross-thread access.
我想這是返回的字符串的問題。但是,即使我把這個:
MessageBox.Show("foobar");
同樣的例外上升。 我認爲問題來自無法執行此類操作的ReadCallback函數。
你能幫我嗎?
謝謝
問候
@Alex Paven:我想你錯過了實際的問題。 MessageBox是之後加入到跨線程問題的紅鯡魚。 – 2010-09-21 15:52:58
是的,也立即更新我的答案,包括Dispatcher.Invoke,但我完全明白,我有一個複雜和冗長的風格,可能會觸發TLDR反應。 – 2010-09-21 16:02:59
對於最後一段「Dispatcher.BeginInvoke」是+1。 – AnthonyWJones 2010-09-21 16:04:38