[C#] Excepción no controlada lanzada por PhotoChooserTask


Answers

Puede usar try comprobar cuál es el problema

changeImageButton.Tap += (s, e) =>
{
    try
    {
       PhotoChooserTask pct_edit = new PhotoChooserTask();
       pct_edit.ShowCamera = true;
       pct_edit.Completed += (s,e) =>
       {
           if (e.TaskResult == TaskResult.OK)
           {
              var bi = new BitmapImage() // maybe you didn't initialize bi?
              bi.SetSource(e.ChosenPhoto);
              IsRebuildNeeded = true;
           }
       }
       pct_edit.Show();
    }
    catch (Exception ex)
    {
       Message.Show(ex.Message);
    }
};

Pon el punto de freno en el Message , luego puedes verificar todo dentro de ex .

Question

Tengo este código y lo estoy usando para mostrar un botón que permite al usuario elegir una imagen de su biblioteca y utilizarla como fondo para mi aplicación.

Así que creo un PhotoChooserTask , lo configuro para que muestre la cámara y lo vincule a un método que debe ejecutarse cuando se completa la tarea. El botón iniciará la tarea mostrando PhotoChooserTask . La acción para completar es bastante fácil, solo tengo que establecer un valor booleano y actualizar una fuente de imagen.

PhotoChooserTask pct_edit = new PhotoChooserTask();
pct_edit.ShowCamera = true;
pct_edit.Completed += pct_edit_Completed;
Button changeImageButton = new Button { Content = "Change Image" };
changeImageButton.Tap += (s, e) =>
{
    pct_edit.Show();
};


void pct_edit_Completed(object sender, PhotoResult e)
    {
        if (e.TaskResult == TaskResult.OK)
        {
            bi.SetSource(e.ChosenPhoto);
            IsRebuildNeeded = true;
        }
    }

El problema es que no mostrará el PhotoChooserTask pero me dará una excepción, llevándome a

private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
    {
        if (Debugger.IsAttached)
        {
            Debugger.Break();
        }
    }

en App.xaml.cs

Esto se ve raro ya que tengo otra PhotoChooserTask en la misma clase y esta funciona bien.

¿Qué pasa con eso?

¡VisualStudio ni siquiera me dirá cuál es la excepción y, por lo tanto, no hay forma de resolverlo!

EDITAR:

Acabo de descubrir que la excepción se produce cuando llamo

pct_edit.Show(); 

en el evento de toque del botón.