2

多くの画像ファイルを処理するアプリケーションに取り組んでいます。画像を保持するラップパネルを含むウィンドウを作成しました。ウィンドウは画像のリスト (ファイルへのパス) を取得し、新しい画像コントロールを作成します。この画像コントロールはラップパネルに追加されます。ウィンドウを開くとメモリ使用量が増えているのがわかりますが、ウィンドウを閉じてもメモリ使用量は減りません。ファイルを画像コントロールにロードしようとしたのは次のとおりです。

ファイルストリームの使用:

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;

私は明らかに非常に愚かなことをしています。誰かがそれが何であるかを教えてくれますか?

4

0 に答える 0