检查互联网连接时出现UnhandledException

时间:2014-08-19 10:42:15

标签: c# xaml windows-phone-8

我想检查App.xaml.cs文件中的互联网连接但是当我在构造函数中执行它时会抛出UnhandledException,为什么?是否有可能做到这一点?当我在例如MainPage.xaml.cs中检查它时,它可以工作。

我的代码:

if (NetworkInterface.GetIsNetworkAvailable())
{
    MessageBox.Show("Connected.");
}

调用堆栈:

App.Application_UnhandledException(object sender, System.Windows.ApplicationUnhandledExceptionEventArgs e)
System.Windows.ni.dll!MS.Internal.Error.CallApplicationUEHandler(System.Exception e)
System.Windows.ni.dll!MS.Internal.Error.IsNonRecoverableUserException(System.Exception ex, out uint xresultValue)
System.Windows.ni.dll!System.Windows.Threading.DispatcherOperation.Invoke()
     System.Windows.ni.dll!System.Windows.Threading.Dispatcher.Dispatch(System.Windows.Threading.DispatcherPriority priority)
System.Windows.ni.dll!System.Windows.Threading.Dispatcher.OnInvoke(object context)
System.Windows.ni.dll!System.Windows.Hosting.CallbackCookie.Invoke(object[] args)
    System.Windows.RuntimeHost.ni.dll!System.Windows.RuntimeHost.ManagedHost.InvokeDelegate(System.IntPtr pHandle, int nParamCount, System.Windows.Hosting.NativeMethods.ScriptParam* pParams, System.Windows.Hosting.NativeMethods.ScriptParam* pResult)

2 个答案:

答案 0 :(得分:0)

您应该在try-catch块中包围您显示的代码

例如:

try
{
  if (NetworkInterface.GetIsNetworkAvailable())
  {
    MessageBox.Show("Connected.");
  }
}
catch (Exception e)
{
  MessageBox.Show(e.Message);
}

这是一个非常粗略的异常处理,你可以在这里阅读更多http://www.dotnetperls.com/exception

答案 1 :(得分:0)

首先,您应该避免在应用程序启动或初始化期间调用消息框。有时它会给你错误:

“显示MessageBox时出错。最常见的原因是在应用程序启动或激活时尝试调用Show。在调用Show之前等待页面导航事件。”

您可以使用 Debug.WriteLine(“已连接。”); 而非 MessageBox.Show(“已连接。”);

其他问题是,如果这不起作用,请检查您是否已提供用于访问互联网连接的功能

如果我使用您的代码:

    if (NetworkInterface.GetIsNetworkAvailable())
    {
        Debug.WriteLine("Connected.");
    }

工作正常。