UWP BitmapImage SetSource из MemoryStream зависает
В моем приложении UWP я храню изображения в базе данных SQLite в виде байта []. Затем, извлекая свои объекты из базы данных, я связываю их с шаблоном данных GridView, который имеет элемент управления Image. Поскольку я не могу связать источник изображения непосредственно с массивом, я создал свойство BitmapImage в классе моего объекта, чтобы связать элемент управления Image с:
public BitmapImage Icon
{
get
{
using (var stream = new MemoryStream(icon))
{
stream.Seek(0, SeekOrigin.Begin);
var img = new BitmapImage();
img.SetSource(stream.AsRandomAccessStream());
return img;
}
}
}
Проблема в том, что мое приложение висит на строке img.SetSource. После некоторых экспериментов я обнаружил, что эту проблему можно решить с помощью второго MemoryStream:
public BitmapImage Icon
{
get
{
using (var stream = new MemoryStream(icon))
{
stream.Seek(0, SeekOrigin.Begin);
var s2 = new MemoryStream();
stream.CopyTo(s2);
s2.Position = 0;
var img = new BitmapImage();
img.SetSource(s2.AsRandomAccessStream());
s2.Dispose();
return img;
}
}
}
Почему-то работает, не зависает. Интересно, почему? И как правильно справиться с этой ситуацией? Спасибо!