C# Windows 8 開發,取得目前網路是否可用,避免掉無網路狀態時的 Exception 例外狀況。

  • 1502
  • 0
  • C#
  • 2015-06-10

常常我們在開發Windows Store App時會使用網路來讀取網頁的資料或其他開放平台的Json、Xml資料,我們預設的情況都是網路通順的狀態,那當然資料會正常的讀取,但是在沒有網路的情況下我們仍對網路進行存取就有可能會丟出Exception例外狀況,譬如小弟在無網路情況下仍使用HttpClient讀取網路上的資源,就會丟出Excepton的例外。

本文將引導您開發Windows store App時在C#中偵測目前網路的可用狀況。

常常我們在開發Windows Store App時會使用網路來讀取網頁的資料或其他開放平台的Json、Xml資料,我們預設的情況都是網路通順的狀態,那當然資料會正常的讀取,但是在沒有網路的情況下我們仍對網路進行存取就有可能會丟出Exception例外狀況,譬如小弟在無網路情況下仍使用HttpClient讀取網路上的資源,就會丟出Excepton的例外。

 

本文將引導您開發Windows store App時在C#中偵測目前網路的可用狀況。

 

 

當然我們也可以使用Try{}catch{}的方式來避免掉程式整個掛掉,但是究竟是不是因為無網路狀態導致的Exception 就不得而知了,

說不定是其它狀況導致Exception,所以在這之前我們可以先判斷目前網路的可用情況,

若目前網路不可用的話可以提示使用者務必確實連接網路,若網路可用在進行下一步動作。

 

 

 

判斷網路是否可用的程式碼如下:

 

   1:  //取得網路是否可用
   2:  public static bool IsInternet()
   3:  {
   4:      ConnectionProfile connections = NetworkInformation.GetInternetConnectionProfile();
   5:      bool internet = connections != null && connections.GetNetworkConnectivityLevel() == NetworkConnectivityLevel.InternetAccess;
   6:      return internet;
   7:  }

 

用法如下:

 

   1:  if (IsInternet())
   2:  {
   3:      //網路可用
   4:  }
   5:  else { 
   6:      //網路不可用
   7:  }

 

如此一來便可以避免掉無網路情況的Exception 例外情況囉!!

 

Refrences : Quickstart: Retrieving network connection information

 

文章中的敘述如有觀念不正確錯誤的部分,歡迎告知指正 謝謝
轉載請註明出處,並且附上本篇文章網址 !  感謝。

SUKI

HOLIESTAR