2013-11-25 2 views
1

내가 메시지 대화메시지

catch (Exception ex) 
      { 
       MessageDialog err = new MessageDialog("Error"); 
       await err.ShowAsync(); 


      } 

을 오류를 잡아 표시 내 Windows 8 앱 기능에 다음 코드를 사용하고 캐치 절에 표시되지 않는 사항 대화 상자를하지만 오류가 "의 본문에 기다리고 없습니다 catch 절 "을 참조하십시오.

그러나 내가 await을 제거하면 작동하지만 코드에서 경고를받습니다. "이 호출이 대기 중이므로 호출이 완료되기 전에 현재 방법을 계속 실행합니다. 결과에 await 연산자를 적용하는 것이 좋습니다. 호출".

이 catch 절에 메시지를 표시해야합니까, 어떻게 수정합니까?

+0

http://stackoverflow.com/questions/8868123/awayit-in-catch-block이 링크는 도움이 될 수 있습니다. – HappyLee

+0

동일한 질문을 여러 번 게시하지 마십시오. 이 작업을하지 말아야하는 가장 큰 이유는 두 가지 질문이 모두 서로 중복되는 위험이 있다는 것입니다. – ZombieSheep

+0

또한 FYI - '어디에서 사용할 수 있습니까?'부분을 읽어주십시오. http://blogs.msdn.com/b/pfxteam/archive/2012/04/12/10293335.aspx#14 – HappyLee

답변

1

catch에서 작업을 수행하는 대신 예외를 로컬 변수로 설정하면됩니다. null이 아닌 경우 catch 블록이 끝난 후에 처리해야한다는 것을 알고 있습니다.

public static async Task Foo() 
{ 
    Exception e = null; 
    try 
    { 
     //just something to throw an exception 
     int a = 0; 
     int n = 1/a; 
    } 
    catch (Exception ex) 
    { 
     e = ex; 
    } 
    if (e != null) 
     await ShowDialog(); 
}