Release handle on file. ImageSource from BitmapImage
c#, wpf, xaml
Solution
Found the answer on MSDN Forum.
Bitmap stream is not closed unless caching option is set as BitmapCacheOption.OnLoad. So you need something like this:
public static ImageSource BitmapFromUri(Uri source)
{
var bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.UriSource = source;
bitmap.CacheOption = BitmapCacheOption.OnLoad;
bitmap.EndInit();
return bitmap;
}
And when you get an ImageSource using the method above, source file will be immediately closed.
see MSDN social forum
Problem
How can I release the handle on this file? img is of type System.Windows.Controls.Image ``` private void Load() { ImageSource imageSrc = new BitmapImage(new Uri(filePath)); img.Source = imageSrc; //Do Work imageSrc = null; img.Source = null; File.Delete(filePath); // File is being used by another process. } ``` Solution ``` private void Load() { ImageSource imageSrc = BitmapFromUri(new Uri(filePath)); img.Source = imageSrc; //Do Work imageSrc = null; img.Source = null; File.Delete(filePath); // File deleted. } public static ImageSource BitmapFromUri(Uri source) { var bitmap = new BitmapImage(); bitmap.BeginInit(); bitmap.UriSource = source; bitmap.CacheOption = BitmapCacheOption.OnLoad; bitmap.EndInit(); return bitmap; } ```