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

标签 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();

最佳答案

原因是因为你的后台线程不能直接用来更新UI。相反,您需要使用 Dispatcher 将数据编码到 UI 线程。像这样:

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

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

关于c# - 在后台线程 WP7 上创建 BitmapImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6518783/

相关文章:

c# - 无法使用 Unity 将依赖项注入(inject) ASP.NET Web API Controller

c# - 在 Canvas 上画东西

windows-phone-7 - MvvmCross 指定页面的数据上下文

android - 替换位图中的颜色

c# - 如何将 SVG 图像渲染为单色位图图像?

c# - 线程和 lambda 表达式

c# - visual studio 2010 中的 mahapps 对话框

c# - 处理 SQLite EF Core 限制 - 基础操作

silverlight - Silverlight、MonoTouch、MonoDroid 和 Windows Phone 的本地数据库

c++ - 解码位图时宽度不正确