当我按回设备键时如何解决未处理的异常?

时间:2012-04-18 11:42:35

标签: c# windows-phone-7

当我按回设备键时如何解决此问题我得到了未处理的异常?

我在windows phone 7应用程序中实现了收藏夹功能。   private void FavoriteClick(对象发送者,EventArgs e)         {

            var favorites = GetFavorites();

            if (favorites.Any(m => m.key == _key))
            {
                RemoveFavorite();
                IsolatedStorageSettings.ApplicationSettings["favorites"] = favorites;
                //NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative)); 
                return;
            }

            AddFavorite();              
    }

    private void AddFavorite()
    {
        const string messageBoxText = "Do you wish to add this page to your favorites?";
        const string caption = "Add Favorite";
        const MessageBoxButton button = MessageBoxButton.OKCancel;
        // Display message box
        var result = MessageBox.Show(messageBoxText, caption, button);

        // Process message box results
        switch (result)
        {
            case MessageBoxResult.OK:
                var favorites = GetFavorites();
                favorites.Add(_page);                   
                IsolatedStorageSettings.ApplicationSettings["favorites"] = favorites;
                break;
        }
    }

    private void RemoveFavorite()
    {
        const string messageBoxText = "Do you wish add remove this page to your favorites?";
        const string caption = "Remove Favorite";
        const MessageBoxButton button = MessageBoxButton.OKCancel;
        // Display message box
        MessageBoxResult result = MessageBox.Show(messageBoxText, caption, button);

        // Process message box results
        switch (result)
        {
            case MessageBoxResult.OK:
                List<MobiRecord> favorites = GetFavorites();

                foreach (MobiRecord m in favorites)
                {
                    if (m.key == _key)
                    {
                        favorites.Remove(m);
                        IsolatedStorageSettings.ApplicationSettings["favorites"] = favorites;                           
                        return;
                    }
                }                    
                break;
        }
    }

问题:

我添加了一些收藏夹后,我去了收藏夹页面,然后选择任何一个添加的收藏夹,然后点击删除收藏夹,我点击后退按钮,应用程序自动关闭(我得到了无瑕疵的例外)。

1 个答案:

答案 0 :(得分:1)

这里的问题很可能是你正在改变你正在进行foreach迭代的集合(通过调用最喜欢的删除)。 这将导致您的异常(虽然我需要异常详细信息才能确定)。

正如此代码段从集合中删除:

favorites.RemoveAll(m => m.key == _key);