2014-03-01 107 views
0

我正在使用以下代碼來更新圖像源並不斷收到異常。圖像更新異常

String[] ParseLocationAndMessage = Shouts[0].Message.Split(','); 
var bitmap = new BitmapImage(new Uri("http://shout.somee.com/allimages/IVn1XSTZXShJG5UxrvLZCOGXolVHjR9WCzDag-WVLsjAtla.jpg")); 

shoutImage1.Source = bitmap; 

shoutmessage1.Text = ParseLocationAndMessage[0]; 
shoutlocation1.Text = ParseLocationAndMessage[1]; 

我看了很多,發現這是給圖像源的最佳方式,任何想法爲什麼發生這種情況?

+0

確切的錯誤信息是什麼? – har07

+0

在System.Windows.ni.dll中發生類型'System.UnauthorizedAccessException'的異常,但未在用戶代碼 –

回答

1

它是一個跨線程訪問異常嗎?嘗試換一個BeginInvoke的保證代碼運行在UI線程內部代碼:

Deployment.Current.Dispatcher.BeginInvoke(() => 
{ 
    // code 
}); 

有太少的信息真的相信這個問題是什麼。 它總是發生?您的應用可以保存多少張圖片 - 輕鬆超過500張?你的代碼在哪裏調用?在異步方法裏面?你在某處使用.ConfigureAwait(false)嗎? 嘗試設置斷點以查看引發異常的位置? 如果是當你設置圖像源,那麼它很可能是一個跨線程異常。

+0

中處理,異常在 處引發var bitmap = new BitmapImage(new Uri(「http:// shout.somee的.com/allimages/IVn1XSTZXShJG5UxrvLZCOGXolVHjR9WCzDag-WVLsjAtla.jpg「)); –

+0

虐待它嘗試。謝謝 –

+1

BitmapImage只能在UI線程上實例化,所以看起來像是一個跨線程問題。 你是否在Tasks.Run中運行你的代碼?或者在調用代碼之前使用ConfigureAwait(false)? – JonPall