2012-03-17 72 views
0

我正在研究一個簡單的WP7應用程序,它顯示來自其實時XML饋送的BART到達。我有這部分工作,但我需要解決這個問題,所以它會被認證爲市場。當沒有網絡連接時停止WP7應用程序崩潰

當我在飛行模式下在我的WP7設備上調試應用程序時,當我嘗試獲取XML信息時,應用程序崩潰。

我在網上找到用於測試網絡連通性的方法,似乎這樣的伎倆:

private bool InternetIsAvailable() 
    { 
     var available = !NetworkInterface.GetIsNetworkAvailable(); 
     #if DEBUG 
     available = false; 
     #endif 
     if (!available) 
     { 
      MessageBox.Show("No internet connection is available. Try again later."); 
      return false; 
     } 
     return true; 
    } 

的代碼被稱爲像這樣(在調用獲取該XML的方法相同的代碼,而是權利之前它):

bool foo; 
foo=InternetIsAvailable(); 
if (foo == false) 
     { 
      NavigationService.Navigate(new Uri("/map.xaml", UriKind.Relative)); 


     } 

這裏我的想法是,如果沒有網絡接入,應用程序將返回到前一頁,直到當有網絡訪問(而不是崩潰和map.xaml是上一頁)。但是,該應用在檢測到無法訪問網絡後仍然崩潰。我在這裏做錯了什麼?我也在同時學習C#,所以有一些我失蹤的異常處理事情嗎?

感謝

+0

將你的代碼放在try catch塊中。 – Dementic 2012-03-17 20:50:30

回答

1

沒有看到你的代碼的其餘部分我不知道爲什麼它的崩潰,從而有可能是一個很大的什麼都沒有做網絡接入的原因。

對GetIsNetworkAvailable的調用是正確的,但其周圍的代碼有點令人困惑(使用負值然後比較返回值)。許多負面比較只會使代碼不易讀。

如果沒有網絡可用,您如何測試系統?在模擬器上,你不能這樣做。在真實的設備上,您必須將手機置於飛行模式。只關掉網絡是不夠的。

而且我認爲有這個方法做什麼,但返回的網絡狀態,並讓其他的東西(主叫)處理通知。通過這種方式,您可以在需要檢查的任何位置重新使用它,而無需將自己綁定到UI。

最後一件事是不使用導航如果你想重定向用戶。這仍然會保持後臺的增長。如果沒有可用的網絡,最好使用NavigationService.GoBack(),它有效地將用戶返回到上一頁(就像他們點擊後退按鈕一樣)。

+0

我正在Lumia 800上打開飛機模式進行測試。 – 2012-03-17 21:03:33

+0

在測試過程中,您是否將設備與電腦斷開連接?我相信GetIsNetworkAvailable()調用可能會返回在設備的真正連接到PC – 2012-03-18 10:17:44

+0

GetIsNetworkAvailable()如果你連接到Zune播放器將返回true! – 2012-03-18 11:13:46

相關問題