c# – 在后台线程WP7上创建BitmapImage

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

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

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

最佳答案 原因是因为您的后台线程无法直接用于更新UI.相反,您需要使用Dispatcher将数据封送到UI线程.像这样的东西:

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

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