2014-12-04 107 views
0

我有一個消息對話框以在沒有互聯網時提示用戶。MessageDialog在被調用時崩潰 - Windows Phone Store應用程序

public async void validateInternet() 
{ 
    if (!isInternet()) 
    { 
     Action cmdAction = null; 
     MessageDialog _connectAlert = new MessageDialog("We are currently experiencing difficulties with your conectivity. Connect to internet and refresh again.", "No internet"); 
     _connectAlert.Commands.Add(new UICommand("Retry", (x) => { cmdAction =() => validateInternet(); })); 
     _connectAlert.DefaultCommandIndex = 0; 
     _connectAlert.CancelCommandIndex = 1; 
     await _connectAlert.ShowAsync(); 
     cmdAction.Invoke(); 
    } 
} 

public static bool isInternet() 
{ 
    ConnectionProfile connections = NetworkInformation.GetInternetConnectionProfile(); 
    bool internet = connections != null && connections.GetNetworkConnectivityLevel() == NetworkConnectivityLevel.InternetAccess; 
    return internet; 
} 

現在,我在MainPage加載時調用此函數validateInternet。該應用程序打開消息對話框,並立即崩潰。代碼有什麼問題?

一個A first chance exception of type 'System.UnauthorizedAccessException' occurred in BusTrack.exe Additional information: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))

await _connectAlert.ShowAsync(); 
+0

代碼本身沒有問題。它可以在Page.Loaded和OnNavigatedTo中正常工作。你究竟在哪裏叫它?從UI線程? – 2014-12-04 07:11:04

+0

我從'public MainPage()'調用它。我也嘗試從'MainPage_Loaded'調用它。相同的錯誤 – 2014-12-04 07:38:30

+1

好吧,這似乎是爲我工作。 'validateInternet'方法是你在'Loaded'處理程序中調用的唯一東西嗎?如果您嘗試顯示對話框,而另一個對話框已顯示,則會發生此異常。與此無關 - 如果您不按「重試」並將拋出NullPointerException,則cmdAction將爲空。 – yasen 2014-12-04 09:10:12

回答

1

拋出@yasen正確地指出的那樣,validateInternet()被稱爲無論是在MainPage_loaded()OnNavigatedTo()

因此,System.UnauthorizedAccessException發生,因爲這兩種方法都會嘗試顯示messageDialog。所以,千萬不要試圖同時調用兩個消息對話框。

相關問題