应用程序崩溃从媒体库加载缩略图

时间:2014-10-11 10:27:16

标签: c# windows-phone-8 media-library

我在我的Windows Phone 8应用程序中集成了图片库。

这是xaml代码:

        <phone:LongListSelector Name="listdata" LayoutMode="Grid"
JumpListStyle="{StaticResource JumpListStyle}" GridCellSize="147,147">
            <phone:LongListSelector.ItemTemplate>
                <DataTemplate>
                    <Border BorderBrush="White" BorderThickness="1">
                        <Image Source="{Binding thumbnail}" Height="147" Width="147"/>
                    </Border>
                </DataTemplate>
            </phone:LongListSelector.ItemTemplate>

        </phone:LongListSelector>

    </Grid>

这里是imagemodel类:

public class imagemodel
{
    public WriteableBitmap thumbnail { get; set; }
    public string name { get; set; }
    public Picture image;
    private Picture picture;

    public imagemodel(Picture pic)
    {
        image = pic;
        name = pic.Name;
        thumbnail = PictureDecoder.DecodeJpeg(pic.GetThumbnail());

    }



}

MediaLibrary lib = new MediaLibrary();

    public void loadmygallery()
    {

        foreach (var picture in lib.Pictures)
        {

                imagemodel im = new imagemodel(picture);
                collection.Add(im);

        }

    }

应用在打开图库页面时崩溃了。这可能是由于内存过载,如果我将缩略图限制为30或不是很高的数字,代码运行正常。还有什么方法可以显示所有缩略图吗?

1 个答案:

答案 0 :(得分:0)

由于上下文很少,我无法看到图像是如何处理的,所以我很难告诉你很多关于你的错误,但.... 我认为缩略图不是原因,如果它限制计数它可以正常工作。 尝试更改代码不要存储图像,通常是将程序缓存缩略图放入单独的文件中,或者更坏的情况下放入内存中(只是因为图像需要每次都完全处理),并显示缩略图,以便您的应用程序不会存储所有内容你的媒体库进入ram。 图像本身仅在打开时才会被读取。