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;
            }
        }
    }

Почему-то работает, не зависает. Интересно, почему? И как правильно справиться с этой ситуацией? Спасибо!

Ответы на вопрос(3)

Ваш ответ на вопрос