0

我想调用 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);
    ...
});
4

1 回答 1

0

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

于 2013-04-05T11:26:22.267 回答