2014-01-17 4 views
1

Я создаю приложение Windows 8.1, используя Bing map sdk в C#, используя это руководство http://www.codeproject.com/Articles/408457/Using-Bing-Maps-For-Windows-8-Metro-Apps-Csharp-Ja.Сделка без подключения к Интернету в окнах 8 приложение, использующее bing map api

Теперь, когда я использую это приложение без подключения к Интернету, приложение выходит из строя. Итак, как я могу справиться с этим исключением?

+0

«Итак, как я могу справиться с этим исключением?» - то же самое, что вы имеете дело с любой другой проблемой, когда это не под контролем вашей программы, чтобы предотвратить - вы должны поймать исключения, когда они происходят, а затем решить, следует ли повторять попытку, что вы только что пробовали, или просто сдаться и сказать пользователь, который. Оба текущих ответа одинаково ошибочны, потому что они считают, что можно «предварительно проверить» что-то, что может изменить его фактическое состояние в любое время, а не под контролем * вашей * программы. –

ответ

2

Поместить эту недвижимость в App.xaml.cs, как использовать его, чтобы проверить, если Интернет доступен или нет

public static bool IsInternetAvailable 
{ 
    get 
    { 
     var profiles = NetworkInformation.GetConnectionProfiles(); 
     var internetProfile = NetworkInformation.GetInternetConnectionProfile(); 
     return profiles.Any(s => s.GetNetworkConnectivityLevel() == NetworkConnectivityLevel.InternetAccess) 
      || (internetProfile != null 
        && internetProfile.GetNetworkConnectivityLevel() == NetworkConnectivityLevel.InternetAccess); 
    } 
} 

if(App.IsInternetAvailable) 
{ 
    //Do operation of Bing map 
} 
else 
{ 
    //Show message dialog 
} 
+0

См. Мой комментарий к interneo's [ответ] (http://stackoverflow.com/a/21184556/15498) - тот же вопрос можно задать из этого свойства. –

0

Проверьте его первым?

Например методом:

public static bool CheckForInternetConnection() 
{ 
    try 
    { 
     using (var client = new WebClient()) 
     using (var stream = client.OpenRead("http://www.bing.com")) 
     { 
      return true; 
     } 
    } 
    catch 
    { 
     return false; 
    } 
} 
+0

Я думаю, что ваш код для телефона Windows. Но мое приложение для Windows 8.1 приложение –

+0

Извините, моя ошибка. Я редактировал код. – Rayet

+1

И сразу же после возвращения этой функции, но прежде чем ваш код ничего не сделает с результатом, внешняя реальность изменится. Таким образом, вам нужно написать код, который, даже после того, как эта функция вернулась к истине, должна иметь дело с недоступным доступом в Интернет (или путем изменения частичного пути использования). Учитывая, что вы должны написать этот код * в любом случае * для создания надежного программного обеспечения, какая возможная польза при вызове этой функции? –

0

Вот мой код для окон 8.1

public static bool have_net() 
    { 
     ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile(); 

     if (InternetConnectionProfile == null) return false; 

     NetworkConnectivityLevel ncl = InternetConnectionProfile.GetNetworkConnectivityLevel(); 

     if (ncl == NetworkConnectivityLevel.InternetAccess) 
     { 
      return true; 
     } 

     bool b1 = InternetConnectionProfile.IsWwanConnectionProfile; 
     bool b2 = InternetConnectionProfile.IsWlanConnectionProfile; 

     return (b1 || b2); 
    }