BitmapImage in WPF does lock file
Solution 1:
As shown in the question you link to, you'd need to call BeginInit and EndInit, like so as well as set the UriSource property:
Dim bmi As New BitmapImage()
bmi.BeginInit()
bmi.CacheOption = BitmapCacheOption.OnLoad
bmi.UriSource = New Uri(fiInfo.FullName, UriKind.Absolute)
bmi.EndInit()
Solution 2:
Read the BitmapImage
from file and rewrite it with a MemoryStream
:
MemoryStream ms = new MemoryStream();
BitmapImage bi = new BitmapImage();
byte[] bytArray = File.ReadAllBytes(@"test.jpg");
ms.Write(bytArray, 0, bytArray.Length);ms.Position = 0;
bi.BeginInit();
bi.StreamSource = ms;
bi.EndInit();
image.Source = bi;
Solution 3:
I had a similar problem and I solved using this method: (it's a personalization of an answer here)
public static BitmapImage BitmapFromUri(Uri source)
{
var bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.UriSource = source;
bitmap.CacheOption = BitmapCacheOption.OnLoad;
bitmap.EndInit();
return bitmap;
}
You can open the image like this:
BitmapImage bimg = BitmapFromUri(new Uri(some_URI));
And it releases the image immediatly after loading it.
Hope it can helps!