サムネイルイメージを多数(時には何百もの場合もある)読み込む必要があります。パフォーマンス上の理由から、私は限られた数のリクエストでこれを行う必要があります。私はテストのために単一のリクエスト/レスポンスを使用しています。私はレスポンスの画像のバイナリデータを送信し、MemoryStreamを使ってBitmapImageにロードしています。これは、約80枚以上のサムネイルを読み込むまで正しく動作します。その後、致命的なエラー例外が発生します。私のデータが壊れていないことを確認するために、私は同じバイト配列でBitmapImageを複数回ロードしようとしましたが、80またはそれ以降のロードでクラッシュしました。私はその後のソースとしてのBitmapImageを使用Silverlight:ストリームからのビットマップイメージ例外(致命的なエラー(HRESULT:0x8000FFFF(E_UNEXPECTED)からの例外))
private BitmapImage LoadImage(byte[] imageData)
{
BitmapImage img = new BitmapImage();
MemoryStream stream = new MemoryStream(imageData);
img.SetSource(stream); // Exception thrown here after too many images loaded.
return img;
}
:ここ
画像をバイト配列からロードする方法のサンプルであり、バイト配列は、有効な画像データ(PNG)を有することが知られていますページの画像要素ですが、上記のimg.SetSource(...)
行でエラーが発生します。
ループにサムネイル画像をロードしているときに、画像をもう少し読み込むことができるので、これはメモリ管理と関係がありますが、問題を解決するために何ができるか分かりません。
これが問題になる可能性があるのかどうかはわかりませんが、MemoryStreamにはReadTimeoutプロパティとWriteTimeoutプロパティがあります。ストリームがタイムアウトになることはありますか? – Danexxtone
ReadTimeoutを設定しようとしましたが、例外があります。このストリームではタイムアウトはサポートされていません。 – toby
いくつかの問題を解決できますか?なぜバイト配列ですか? 'img.SetSource'に直接ダウンロードできるストリームはありませんか?ダウンロードしているPNGが「サムネイル」サイズであるか、画像コントロールで拡大縮小されている大きな画像をダウンロードしていますか?写真のサムネイルはありますか? – AnthonyWJones