UI に表示された後、BitmapImage のソースは自動的にリリースされますか?
BitmapImage が Image コントロールに一度表示された後、再度表示するのに約 300 ミリ秒かかることがわかりました。その遅延の間、画面には何も描画されません。XPerf を使用したプロファイリングは、デコード操作を示しています。画像は既に表示されているため、デコードは必要ありません。
(ところで、これは Windows 8 では起こらなかったことを誓いますが、それを証明することはできません)
編集 - その他のプロファイリング...
1 回の実行で、250 ミリ秒の遅延は、デコード用の 120 ミリ秒、レンダー ターゲットの塗りつぶし用の 100 ミリ秒、および dwm が画面に配置するための 30 ミリ秒に分割されます。おそらく、イメージ コントロールによって解放されているのは、レンダー ターゲットのメモリでしょうか?
編集 -
Image コントロールの Source に新しく作成された BitmapImage が与えられると、そのイメージはすぐに UI に表示されます。以前に表示された BitmapImage が与えられると、何も表示されない ~300ms があります。XPerf でプロファイリングすると、これらの状況の主な違いは、後者ではデコード手順が必要になることです。
Image コントロールがビットマップで行っていることを盗聴できることを期待して、BitmapSource のプロキシを作成しました。これはうまくいきませんでした。Image コントロールは、ユーザーに要求するインターフェイス (ImageSource) 以外のインターフェイスを介して画像データにアクセスしているように見えます。