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();
代码本身没有问题。它可以在Page.Loaded和OnNavigatedTo中正常工作。你究竟在哪里叫它?从UI线程? – 2014-12-04 07:11:04
我从'public MainPage()'调用它。我也尝试从'MainPage_Loaded'调用它。相同的错误 – 2014-12-04 07:38:30
好吧,这似乎是为我工作。 'validateInternet'方法是你在'Loaded'处理程序中调用的唯一东西吗?如果您尝试显示对话框,而另一个对话框已显示,则会发生此异常。与此无关 - 如果您不按“重试”并将抛出NullPointerException,则cmdAction将为空。 – yasen 2014-12-04 09:10:12