WP8:C#app在更改BitMapImage时崩溃

时间:2014-05-25 21:38:46

标签: c# xaml windows-phone-8 bitmapimage crash

好的,我不知道是什么导致我的应用程序崩溃,我只是不明白发生了什么。我会很快解释我的应用程序可以做什么以及我的问题是什么。 此外,我在这里几乎没有阅读任何关于它的话题,而是通过不同的谷歌网站点击我的方式。 我找不到解决方案,所以我不得不问!

我将图像设置为背景 - >工作正常。

我有一个TextBlock,它每隔15秒显示一次不同的文本,由一个计时器控制,每个文本都保存在一个列表中! - >工作正常。

我淡出/淡出该文本 - >工作正常。

我底部有一个应用栏 - >工作正常。

使用代码的平和来追踪一张明确的图片 - >工作正常。

private void Appearance_Click(object sender, EventArgs e)
    {
         Hintergrund.Source = new BitmapImage(new Uri("/Pictures/StarsNight19.jpg",    UriKind.Relative));
    }

我有大约20个不同的图像,它们都有相同的名称,保存在我项目的文件夹中。路径如代码片段所示:/Pictures/StarsNightXX.jpg

构建操作设置为:CONTENT (基本上已经尝试了一切......)

复制到输出目录设置为:始终复制。

现在这是我的问题。

我将图片的名称保存在列表中。

        .....
        pictures.Add("StarsNight4.jpg");
        pictures.Add("StarsNight5.jpg");
        pictures.Add("StarsNight6.jpg");
        ....

我使用与以前相同的操作,希望在单击应用程序栏中漂亮的小按钮时更改图像:

private void Appearance_Click(object sender, EventArgs e)
    {
        Random rnd = new Random();
        int next = rnd.Next(0, pictures.Count - 1);
        background.Source = new BitmapImage(new Uri("/Pictures/"+pictures.ElementAt(next), UriKind.RelativeOrAbsolute));
    }

BOOM APP崩溃

我无法弄清楚问题出在哪里。

通过编写一个显式名称来改变它,如开头所示正好......

也许有人可以告诉我列表是否导致问题? 我无法理解。

“循环它”也不起作用:

int i = 0;
    private void Appearance_Click(object sender, EventArgs e)
    {
        if (i >= pictures.Count) i = 0; 
        background.Source = new BitmapImage(new Uri("/Pictures/" + pictures.ElementAt(i), UriKind.RelativeOrAbsolute));
        i++;

    }

因为我正在我的WP上直接测试我的应用程序,所以我不知道我得到了什么样的异常。 没办法在我的电脑上编译和测试它只是为了让你知道。

... 在这里迷失了我的想法。

1 个答案:

答案 0 :(得分:0)

请尝试使用此源代码,我已尝试处理下面源代码中创建的对象,使用您的列表和其他代码(如循环)。

private static BitmapImage  bi = null;//this line at the top, not in function
private static Image  si = null;//this line at the top, not in function

if bi!=null)
            {
                bi.Dispose();
                bi = null;
            }

if si!=null)
            {
                si.Dispose();
                si = null;
            }

BitmapImage bi = new BitmapImage();
Image si = new Image();
bi.BeginInit();
bi.UriSource = new Uri(@"/img/img1.jpg",UriKind.RelativeOrAbsolute);
bi.EndInit();
si.Source = bi;