2016-06-27 1 views
2

이 같은 try catch 블록이 호출 때문에오류 MessageDialog.ShowAsync()로 await를 사용시는이 방법 내부

: 나는 라인 message.ShowAsync()에 대한 다음과 같은 경고를 얻을

try 
{ 
    // do something 
} 
catch (Exception ex) 
{ 
    MessageDialog message = new MessageDialog(ex.ToString()); 
    message.ShowAsync(); 
} 

호출이 완료되기 전에 현재 메소드의 실행이 계속됩니다. 호출 결과에 'await'연산자를 적용하는 것을 고려하십시오.

말했다과 수행은 :

'기다린다'연산자 만 비동기 방식 내에서 사용할 수 있습니다 :

try 
{ 
    // do something 
} 
catch (Exception ex) 
{ 
    MessageDialog message = new MessageDialog(ex.ToString()); 
    await message.ShowAsync(); 
} 

지금 나는 예외를 얻을. 이 메소드를 'async'수정 자로 표시하고 리턴 유형을 'Task'로 변경하십시오.

나는 심지어 catch 블록 내에서 대기를 방지하기 위해이 시도 :

Exception exception; 
try 
{ 
    // do something 
} 
catch (Exception ex) 
{ 
    exception = ex; 
} 

if (exception != null) 
{ 
    MessageDialog message = new MessageDialog(ex.ToString()); 
    message.ShowAsync(); 
} 

그러나,이 아무것도 변경되지 않습니다.

이 경우 await을 사용하려면 무엇을해야합니까? MessageDialog.ShowAsync()까지 IntelliSense는 Windows.Foundation.IAsyncOperation<IUICommand>을 반환하는 기다릴 수있는 메서드를 보여줍니다.

+2

오류가 당신이 그것을 해결하는 방법을 알려줍니다 반환 유형을 '작업'으로 변경 *. –

+0

절대적으로 필수 읽기 : [async로 비동기 프로그래밍 및 await (C#)] (https://msdn.microsoft.com/en-us/library/mt674882.aspx). 그, 그리고 오류 메시지를 읽고, 분명히. – IInspectable

답변

2

함수는 "비동기"비동기 연산자를 사용 할 수 있습니다

예 : * '비동기'수정하여이 방법을 표시 고려 :

private async void Test() 
{ 
    MessageDialog message = new MessageDialog(ex.ToString()); 
    await message.ShowAsync(); 
} 
관련 문제