Try-Catch не показывает диалоговое окно сообщения с ожиданием

Следующий код успешно получает данные из веб-службы и отображает их в настольном приложении Windows 8.

HttpClient client = new HttpClient();
HttpResponseMessage response = await client.GetAsync("http://localhost:12345/api/items");

var info = new List<SampleDataGroup>();

if (response.IsSuccessStatusCode)
{
    var content = await response.Content.ReadAsStringAsync();

    var item = JsonConvert.DeserializeObject<dynamic>(content);

    foreach (var data in item)
    {
        var infoSect = new SampleDataGroup
        (
            (string)data.Id.ToString(),
            (string)data.Name,
            (string)"",
            (string)data.PhotoUrl,
            (string)data.Description
        );
        info.Add(infoSect);
    }
}
else
{
    MessageDialog dlg = new MessageDialog("Error");
    await dlg.ShowAsync();
}

Это, однако, требует подключения к Интернету для работы. Приложение вылетает каждый раз, когда нет подключения к интернету.

Как мне написать try catch оператор в этом коде для отображения всплывающего сообщения, если сетевое соединение не работает?

РЕДАКТИРОВАТЬ:

Я пытаюсь использовать MessageDialog ниже, и это останавливает сбой приложения, но не выводит сообщение.

     catch (Exception ex)
        {
            MessageDialog err = new MessageDialog(ex.Message);

        }

1 ответ

Решение

Тебе не нужно

string errorMessage = string.Empty;

try 
{

  HttpClient client = new HttpClient();
  HttpResponseMessage response = await    
  client.GetAsync("http://localhost:12345/api/items");

  var info = new List<SampleDataGroup>();

  if (response.IsSuccessStatusCode)
  {
    var content = await response.Content.ReadAsStringAsync();

    var item = JsonConvert.DeserializeObject<dynamic>(content);

    foreach (var data in item)
    {
        var infoSect = new SampleDataGroup
        (
            (string)data.Id.ToString(),
            (string)data.Name,
            (string)"",
            (string)data.PhotoUrl,
            (string)data.Description
        );
        info.Add(infoSect);
    }
  }
  else
  {
      errorMessage = "Error";
  }      
}    
catch (Exception ex)
{
  ErrorMessage = ex.Message;
}

if (errorMessage != string.Empty) 
{
  MessageDialog dlg = new MessageDialog(errorMessage);
  await dlg.ShowAsync();
}

?

Другие вопросы по тегам