UWP BitmapImage SetSource de MemoryStream trava

No meu aplicativo UWP, eu armazeno imagens em um banco de dados SQLite em forma de byte []. Então, quando recupero meus objetos do banco de dados, vinculo-os a um modelo de dados GridView que possui um controle de imagem. Como não posso vincular a fonte da imagem diretamente à matriz, criei uma propriedade BitmapImage na classe do meu objeto para vincular o controle Image a:

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

O problema é que meu aplicativo trava na linha img.SetSource. Após algumas experiências, descobri que esse problema pode ser superado com um segundo 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;
            }
        }
    }

Por alguma razão, funciona, não trava. Eu quero saber porque? E como lidar com essa situação corretamente? Obrigado!

questionAnswers(3)

yourAnswerToTheQuestion