2013-11-25 3 views
1

Я использую следующий код в моем Windows 8 функции приложения, чтобы поймать ошибку и отобразить сообщение Dialogокна сообщений не отображается в разделе поймать

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


      } 

Но я получаю ошибку «не может ждать в теле предложение catch ".

Но когда я удаляю await, он работает, но я получаю предупреждение о коде «Поскольку этот вызов не ожидается, выполнение текущего метода продолжается до завершения вызова. Рассмотрим применение оператора ожидания к результату вызов".

Мне нужно отобразить сообщение в этом разделе catch, как это исправить?

+0

http://stackoverflow.com/questions/8868123/await-in-catch-block Эта ссылка может быть полезной. – HappyLee

+0

Пожалуйста, не отправляйте один и тот же вопрос несколько раз. Самая большая причина, по которой вы не должны этого делать, заключается в том, что существует риск того, что оба ваших вопроса будут закрыты, как дубликаты друг друга. – ZombieSheep

+0

Кроме того, FYI - Пожалуйста, прочтите раздел «Где я не могу использовать« ждут »? от http://blogs.msdn.com/b/pfxteam/archive/2012/04/12/10293335.aspx#14 – HappyLee

ответ

1

Вместо того, чтобы выполнять работу в catch, просто установите исключение для локальной переменной. Если это не пустое, то вы знаете, что вам нужно обработать его после окончания блока 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(); 
} 
Смежные вопросы