0

PictureDecoder.DecodeJpeg()を呼び出して画像ストリームをデコードしたいのですが、メインUIスレッドで呼び出す必要があるようです。そうしないと、「無効なクロススレッドアクセス」が発生します。例外。

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

以下のようにディスパッチャ本体に移動する必要がありますが、ここではコードに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 に答える