在后台线程WP7上创建BitmapImage

时间:2011-06-29 09:56:06

标签: c# windows-phone-7 bitmap multithreading

我在后台(线程池)线程上运行以下代码时收到UnauthorizedAccessException(“无效的跨线程访问。”),这是预期的行为吗?

 var uri = new Uri("resourcevault/images/defaultSearch.png", UriKind.Relative);
 var info = Application.GetResourceStream(uri);

 // this line throws exception....
 this.defaultSearchImage = new BitmapImage();

1 个答案:

答案 0 :(得分:2)

原因是您的后台线程无法直接用于更新UI。相反,您需要使用Dispatcher将数据封送到UI线程。像这样:

var uri = new Uri("resourcevault/images/defaultSearch.png", UriKind.Relative);
var info = Application.GetResourceStream(uri);

Dispatcher.BeginInvoke(() => {        
    this.defaultSearchImage = new BitmapImage();
});