Quantcast
Channel: かずきのBlog@hatena
Viewing all articles
Browse latest Browse all 1387

ネットワークの接続状態を確認する

$
0
0

UWPでインターネットの接続状態を確認するには、NetworkInformationクラスを使います。

NetworkInformationクラスのGetInternetConnectionProfileでインターネット接続へのConnectionprofileクラスが取得できます。これに対して、GetNetworkConnectivityLevelを呼び出すとネットワークの接続状態が取れます。NetworkInformationクラスの状態が変わったときに発生するイベントのNetworkStatusChangedイベントを組み合わせると、ネットワークの状態をリアルタイムに表示することが出来ます。

画面にTextBlockをTextBlockという名前でおいて以下のコードをコードビハインドに書くとネットワークの状況に応じて接続状況が画面に表示されるようになります。

using System;
using Windows.Networking.Connectivity;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;

namespace App44
{
    publicsealedpartialclass MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();
        }

        protectedoverridevoid OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);
            NetworkInformation.NetworkStatusChanged += this.NetworkInformation_NetworkStatusChanged;
            this.NetworkInformation_NetworkStatusChanged(null);
        }

        protectedoverridevoid OnNavigatedFrom(NavigationEventArgs e)
        {
            base.OnNavigatedFrom(e);
            NetworkInformation.NetworkStatusChanged -= this.NetworkInformation_NetworkStatusChanged;
        }

        private async void NetworkInformation_NetworkStatusChanged(object sender)
        {
            var ni = NetworkInformation.GetInternetConnectionProfile();
            if (ni != null)
            {
                var text = default(string);
                if (ni.GetNetworkConnectivityLevel() == NetworkConnectivityLevel.InternetAccess)
                {
                    text = "接続中";
                }
                else
                {
                    text = "接続中ではありません。";
                }

                if (this.Dispatcher.HasThreadAccess)
                {
                    this.TextBlock.Text = text;
                }
                else
                {
                    await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                    {
                        this.TextBlock.Text = text;
                    });
                }
            }
        }
    }
}

f:id:okazuki:20160305172103p:plain


Viewing all articles
Browse latest Browse all 1387

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>