¿Cómo resolver una excepción no controlada cuando presiono la tecla Atrás del dispositivo?

Obtuve una excepción no controlada cuando presiono la tecla Atrás del dispositivo. ¿Cómo resolver este problema?

He implementado la función de favoritos en la aplicación Windows Phone 7. privado void FavoriteClick (remitente del objeto, 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;
        }
    }

Problema:

He agregado algunos de los favoritos después de ir a la página de favoritos, luego selecciono cualquiera de los favoritos agregados y luego hago clic en Eliminar favorito después de hacer clic en el botón Atrás, la aplicación se cerró automáticamente (obtuve una excepción no controlada).

preguntado el 18 de abril de 12 a las 12:04

¿Ha establecido algún punto de interrupción y estos puntos de interrupción se alcanzan antes de generar la excepción no controlada? -

¿Cuál es la excepción + pila de llamadas? -

Si realmente necesita una solución adecuada, agregue los detalles de su excepción, incluida la pila de llamadas:

1 Respuestas

El problema aquí es muy probable que esté cambiando la colección (llamando a Eliminar en favoritos) sobre la que está haciendo la iteración foreach. Esto causará su excepción (aunque necesitaría Detalles de excepción para estar realmente seguro).

Al igual que este fragmento de código para eliminar de la colección:

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

Respondido 02 Jul 12, 19:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.