更改全景控件的背景

更改全景控件的背景

我目前正在开发一个天气应用程序,其中每当天气条件发生变化以及用户尝试从列表中选择其他天气条件不同的城市时,都需要更改全景控件的背景。我面临的问题是,有时我可以正常工作,但有时无论何时尝试更改全景控件的背景,它都会生成AccessViolationException。即使在try catch块中,它也会生成。希望有人能帮助我解决这个问题。我正在这样更改全景控件的背景

        BitmapImage obj = Icons.getBackgroundImage(data.dailyWeatherData[0].weatherCode);
        brush.ImageSource = obj;//Icons.getBackgroundImage(data.dailyWeatherData[0].weatherCode);
        if(Panorama.Background != null)
            Panorama.Background = null;
        try
        {
            Panorama.Background = brush;
        }
        catch (AccessViolationException ex)
        {
            Panorama.Background = null;
        }
        finally
        {
            Panorama.Background = brush;
        }

在此代码中,Icons.getBackgroundImage返回BitmapImage,它是Icons类中的静态变量。请帮助我解决这个问题。我会很感激的。

最佳答案

将UI更新代码放入Dispatcher中,就像其他线程也在进行中一样:

Deployment.Current.Dispatcher.BeginInvoke(() =>
Panorama.Background = brush;
});

关于windows - 更改全景控件的背景会使Windows Phone 7.5中带有AccessViolationException的应用程序崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23930603/

10-11 03:44