为什么调用PictureDecoder.DecodeJpeg()需要在主UI线程中?

时间:2012-12-17 03:41:21

标签: wpf wpf-controls

我想调用PictureDecoder.DecodeJpeg()来解码图像流,但似乎我必须在主UI线程中调用它,否则它将引发一个"无效的跨线程访问。"异常。

Stream imageStream = serivce.GetPicture();
WriteableBitmap bitmap = PictureDecoder.DecodeJpeg(imageStream);
...

我必须将它移动到Dispatcher主体,如下所示,在这里我认为我的代码中没有涉及UI控件,这是为什么?

Deployment.Current.Dispatcher.BeginInvoke(() =>
{
    Stream imageStream = serivce.GetPicture();
    WriteableBitmap bitmap = PictureDecoder.DecodeJpeg(imageStream);
    ...
});

1 个答案:

答案 0 :(得分:0)

由于类层次结构中的DispatcherObject,几乎所有与图像相关的内容都应该在UI线程中完成。这是Silverlight框架设计的一个问题。可能人们没有时间正确移植WPF。