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();
}
?