WPFでBitmapImageクラスを用いた時に、読み込んだ画像ファイルをプロセスで占有しない方法
はじめに
WPF で BitmapImageクラスを用いた時に、ヘルプページなどのよくある実装例をそのまま利用すると、読み込んだ画像ファイルを対象アプリケーションのプロセスが占有してしまい、アプリケーションを終了するまで、その画像ファイルを変更・削除できなくなります。
その回避策の紹介です。
回避策
BitmapImage クラスには、BitmapImage.CacheOption プロパティというものがあり、これを変更することで、メモリ上に画像ファイルを保持する期間が変更できます。
BitmapImage.CacheOption プロパティ
上記プロパティを OnLoad に設定することで、読み込み後に画像ファイルを占有しなくなります。
具体的には、以下のコードになります。
BitmapImage bmpImage = new BitmapImage();
using (FileStream stream = File.OpenRead(filePath))
{
bmpImage.BeginInit();
bmpImage.CacheOption = BitmapCacheOption.OnLoad; // ここが重要
bmpImage.StreamSource = stream;
bmpImage.EndInit();
stream.Close();
}
以下にも同様のことが書かれていました。
How to free the memory after the BitmapImage is no longer needed?
ファイルから解放可能なBitmapImageを読み込む
まとめ
私はWPFを用いて こちらのツール を作っています。
Twitterでも開発に役立つ情報を発信しています → @kojimadev
Author And Source
この問題について(WPFでBitmapImageクラスを用いた時に、読み込んだ画像ファイルをプロセスで占有しない方法), 我々は、より多くの情報をここで見つけました https://qiita.com/kojimadev/items/5d4550993fa372f9a4a5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .