天天看點

WPF中删除打開過的圖檔

在WPF中,當我們删除打開過的圖檔時,往往會遇到"...無法删除,檔案正在被另一個程序使用"的異常。即使目前檔案是打開後關閉過的也不行。

這個問題的原因很簡單,是因為WPF的緩存政策導緻圖檔被鎖定了,解決的方式不是用預設的ImageSource的構造方法,改用如下方式:

    ImageSource

getImage(string file)

    {

        var bmp = new

BitmapImage();

        bmp.BeginInit();

        bmp.CacheOption = BitmapCacheOption.OnLoad;        //這一行很重要

        bmp.UriSource = new

Uri(file);

        bmp.EndInit();

        return bmp;

    }

這種方式本身并沒有什麼問題,但今天發現了更簡單的一個方法,隻要一行代碼即可:

    BitmapFrame.Create(new

Uri(file), BitmapCreateOptions.None, BitmapCacheOption.OnLoad);

這裡記錄一下,以後主要就用這種方式了。