У меня была похожая проблема - мне нужно было предоставить предварительный просмотр изображения, используя временный файл для изображения. Когда предварительный просмотр был закрыт, я хотел удалить файл.
Я использовал явный поток вместо URI для загрузки изображения:
BitmapImage imageSource = new BitmapImage();
FileStream imageStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read | FileShare.Delete);
imageSource.BeginInit();
imageSource.StreamSource = imageStream;
imageSource.EndInit();
// imagePreview is a WPF Image
imagePreview.Source = imageSource;
Затем, когда пришло время закрыть пользовательский интерфейс и выпустить изображение, я явно закрыл поток:
BitmapImage imageSource = imagePreview.Source as BitmapImage;
imagePreview.Source = null;
if (null != imageSource)
{
System.IO.Stream stream = imageSource.StreamSource;
imageSource.StreamSource = null;
if (null != stream)
{
stream.Close();
}
// now the file can be deleted
File.Delete(filePath);
}