Windows Phone 8连接处理程序/ Internet可用性

时间:2012-11-29 00:47:38

标签: windows-phone-8

我的团队正在开发一个团队项目应用程序。目前,我们需要一个事件处理程序来检查连接状态(如果它是打开/关闭的)。

我对System.Net.NetworkInformation命名空间寄予厚望,但不幸的是,wp8不支持最重要的事情。

有人可以帮我一点吗?

编辑1#

看来,我没有很好地指出我的问题。 我正在使用Mvvm light expresion,它不支持该命名空间,或者至少我无法添加它。

我是使用VS和c#atm的新手,mayby我做错了,但只是当我试图将引用添加到我的项目时它没有列出。

3 个答案:

答案 0 :(得分:29)

我没有在WP8上尝试过System.Net.NetworkInformation命名空间。但新的WP8 Windows.Networking.Connectivity Windows Phone Runtime命名空间工作得很好。

使用Windows.Networking.Connectivity.NetworkInformation.NetworkStatusChanged了解网络状况何时发生变化,并使用Microsoft.Phone.Net.NetworkInformation.NetworkInterface属性或Windows.Networking.Connectivity.NetworkInformation属性查看内容。

    private async void MainPage_Loaded(object sender, RoutedEventArgs e)
    {
        PrintNetworkStatus();

        NetworkInformation.NetworkStatusChanged += NetworkInformation_NetworkStatusChanged;
    }

    void NetworkInformation_NetworkStatusChanged(object sender)
    {
        PrintNetworkStatus();
    }

    private void PrintNetworkStatus()
    {
        Dispatcher.BeginInvoke(() =>
        MessageBox.Show(NetworkInterface.NetworkInterfaceType +
                        Environment.NewLine +
                        NetworkInterface.GetIsNetworkAvailable()));
    }

当我在WP8 Lumia 920上测试此代码片段时,它按预期工作。在我的手机在WiFi上启动时,我只看到以下MessageBox:

Connected Messagebox

一旦我关闭了我的WiFI路由器并且手机上的WiFi连接丢失,我看到以下MessageBox:

Disconnected MessageBox

答案 1 :(得分:18)

试试这个:

bool isNetwork=NetworkInterface.GetIsNetworkAvailable();
if(!isNetwork)
{
   //proceed with your code

}

答案 2 :(得分:2)

在App.xaml.cs中,创建一个如下所示的属性

/// <summary>
/// check if network is available
/// </summary>
public bool IsNetworkAvailable
{
    get
    {
        return NetworkInterface.NetworkInterfaceType != NetworkInterfaceType.None;
    }
}

您可以在项目的任何位置使用此属性,如下面的代码

if (((App) Application.Current).IsNetworkAvailable)
{
         //Lines of Code
}
else
{
     MessageBox.Show("Not Connected to Network!", "Checking Connection!",
               MessageBoxButton.OK);     
}