2013-08-07 8 views
4

이 코드가 있는데이 코드를 사용하여 사용자가 라이브러리에서 이미지를 선택하고 내 앱의 배경으로 사용할 수있는 버튼을 표시합니다.PhotoChooserTask에 의해 처리되지 않은 예외가 발생했습니다.

그래서 PhotoChooserTask을 만들고 카메라를 표시하도록 설정하고 작업 완료시 실행해야하는 메서드에 바인딩합니다. 버튼은 PhotoChooserTask을 표시하여 작업을 시작합니다. 완료 작업은 매우 쉽습니다. 부울 값을 설정하고 이미지 소스를 업데이트해야합니다.

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; 
     } 
    } 

문제는 App.xaml.cs

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

에 데려가, 그것은 PhotoChooserTask 표시되지 않습니다하지만 나에게 예외를 줄 것입니다.

같은 클래스에 다른 PhotoChooserTask이있어 이상하게 보입니다.이 하나는 정상적으로 작동합니다.

무엇이 문제입니까?

VisualStudio는 예외가 무엇인지 알려주지 않으므로 알아낼 방법이 없습니다!

편집 : 난 그냥 버튼의 탭 이벤트에

pct_edit.Show(); 

를 호출 할 때 예외가 발생되는 것을 발견

.

답변

1

선택자를 클래스의 필드로 정의해야합니다. PhotoChooser의 페이지 범위가 있어야합니다. 그런 다음 생성자에서 구독합니다. 이것은 당신은 다음 ex 내부의 모든 것을 확인할 수 Message에 문제를

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); 
    } 
}; 

넣어 brakepoint을 무엇인지 확인하기 위해 try를 사용할 수있는 MSDN here

class SomeClass 
{ 
    readonly PhotoChooserTask pct_edit = new PhotoChooserTask(); 

    SomeClass() 
    { 
     pct_edit.ShowCamera = true; 
     pct_edit .Completed += new EventHandler<PhotoResult>(pct_edit_Completed); 
    } 
} 
+0

그게 내가 이미하고있는 (전체 클래스를 붙여 넣지는 않았지만 작업은 내 클래스의 필드로 선언되어 있습니다.) 문제는 버튼 내부에서 호출하면 작업이 작동하지 않는다는 것입니다. – StepTNT

+0

다른 이벤트에서 작업을 시도 했습니까? 아마도 문제는 사실 당신의 버튼 일 것입니다. – steveg89

+0

이벤트를 '탭'에서 '클릭'으로 변경했지만 아무 것도 변경되지 않았습니다. 작업이 표시되지만 응용 프로그램이 충돌하여 작업을 완료 할 수 없도록 예외가 throw됩니다. – StepTNT

1

에 적혀있다.

관련 문제