如何在UWP应用程序中异步检测网络变化事件



我正在构建一个UWP应用程序,我试图检测不同类型的网络事件异步变化。

用户可以对网络进行更改并及时看到更改的效果。

例如-

  • 飞行模式开/关异步检测
  • 蓝牙开关异步检测
  • 网络连接开关异步检测

我能够检测飞行模式ON/OFF同步检测使用以下代码

public bool isConnectedToNetwork()
{
return NetworkInformation.GetInternetConnectionProfile()?.NetworkAdapter != null;
}
private void checkAirplaneMode()
{
if(isConnectedToNetwork())
{
airplaneText.Text = "AirplaneMode: OFF";
} 
else
{
airplaneText.Text = "AirplaneMode: ON";
}
}

但是我想(我想)异步做它作为网络事件的变化。因此,用户不必一次又一次地运行应用程序来查看更改。

UWP提供了特定的事件来通知这些更改,例如NetworkInformation。NetworkStatusChanged事件,BluetoothDevice。ConnectionStatusChanged事件。

如果你想检测网络变化事件,你可以注册连接状态变化事件的通知。

// register for network status change notifications
networkStatusCallback = new NetworkStatusChangedEventHandler(OnNetworkStatusChange);
if (!registeredNetworkStatusNotif)
{
NetworkInformation.NetworkStatusChanged += networkStatusCallback;
registeredNetworkStatusNotif = true;
}

然后您可以检索连接状态更改信息并添加您的触发代码。

async void OnNetworkStatusChange(object sender)
{
// get the ConnectionProfile that is currently used to connect to the Internet                
ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile();
if (InternetConnectionProfile == null)
{
//add code about not connected
}
else
{
//add code about connected
}
}

最新更新