簡體   English   中英

WP8:更改BitMapImage時C#應用程序崩潰

[英]WP8: C# app crashes while changing BitMapImage

好的,我不知道是什么導致我的應用程序崩潰,而且我根本不了解發生了什么。 我將在短期內解釋我的應用程序可以做什么以及我的問題是什么。 此外,我在這里幾乎沒有閱讀有關該主題的任何主題,並且正在通過不同的Google網站點擊我的方式。 我沒有找到解決方案,所以我不得不問!

我將圖像設置為背景->工作正常。

我有一個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應用崩潰

我只是不知道問題出在哪里。

如開頭所示,通過寫一個明確的名稱來更改它可以正常工作...

也許有人可以告訴我該列表是否引起問題? 我只是想不通。

“循環”也不可行:

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上測試我的App,所以我不知道會遇到哪種異常。 只是為了讓您知道,無法在我的計算機上進行編譯和測試。

...在這里失去我的頭腦。

請嘗試使用此源代碼,我已嘗試處置在下面的源代碼中創建的對象,使用您的列表和其他代碼,例如循環。

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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM