多くの画像ファイルを処理するアプリケーションに取り組んでいます。画像を保持するラップパネルを含むウィンドウを作成しました。ウィンドウは画像のリスト (ファイルへのパス) を取得し、新しい画像コントロールを作成します。この画像コントロールはラップパネルに追加されます。ウィンドウを開くとメモリ使用量が増えているのがわかりますが、ウィンドウを閉じてもメモリ使用量は減りません。ファイルを画像コントロールにロードしようとしたのは次のとおりです。
ファイルストリームの使用:
BitmapImage test = new BitmapImage();
using (FileStream stream = new FileStream(strThumbPath, FileMode.Open, FileAccess.Read))
{
test.BeginInit();
test.StreamSource = stream;
test.CacheOption = BitmapCacheOption.OnLoad;
test.EndInit();
}
test.Freeze();
Image.Source = test;
UriSource を使用した読み込み
var bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.UriSource = new Uri(strThumbPath);
bitmap.CacheOption = BitmapCacheOption.OnLoad;
bitmap.EndInit();
bitmap.Freeze();
Image.Source = bitmap;
メモリストリームを使用する:
BitmapImage src = new BitmapImage();
MemoryStream ms = new MemoryStream();
using (FileStream stream = new FileStream(strThumbPath, FileMode.Open, FileAccess.Read))
{
ms.SetLength(stream.Length);
stream.Read(ms.GetBuffer(), 0, (int)stream.Length);
ms.Flush();
stream.Close();
src.BeginInit();
src.StreamSource = ms;
src.EndInit();
src.Freeze();
ms.Close();
}
Image.Source = src;
私は明らかに非常に愚かなことをしています。誰かがそれが何であるかを教えてくれますか?