2016-06-27 6 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

エラーがそれを修正する方法を説明します:*「非同期」修飾子と、このメソッドをマーキング考えてみましょう戻り値の型を 'Task'に変更します。*。 –

+0

絶対に必須の読書:[非同期プログラミングasync and 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(); 
} 
関連する問題