読者です 読者をやめる 読者になる 読者になる

atelier:mitsuba

i love UI/UX, Blend, XAML, Behavior, P5, oF, Web, Tangible Bits and Physical computing. なにかあればお気軽にご連絡ください。atelier@c-mitsuba.com

WP7がネットワークにつながってるかどうかを判別する。

Silverlight WindowsPhone7

WP7がネットワークに繋がってるかどうかをチェックします。
イベント実行時にチェックする分にはMicrosoft.Phone.Net.NetworkInformationを使います。

using Microsoft.Phone.Net.NetworkInformation;

namespace NetAvailableWP7
{
    public partial class MainPage : PhoneApplicationPage
    {
        public MainPage()
        {
            InitializeComponent();

            if (NetworkInterface.GetIsNetworkAvailable()) {
                TextBox.Text = "Online";
            }else{
                TextBox.Text ="Offline";
            }
        }
    }
}

ですが、Microsoft.Phone.Net.NetworkInformationでは、ネットワークの状態が変わったかのChangeEventは取れないみたいです。
なので、リアルタイムで取得したい場合は、SilverlightのOOBでも使っていたusing System.Net.NetworkInformationを使います。

using System.Net.NetworkInformation;

namespace NetAvailableWP7
{
    public partial class MainPage : PhoneApplicationPage
    {
        public MainPage()
        {
            InitializeComponent();

            //イベントはIPが変わったときに走るので、最初に検知する必要があるみたい
            if (NetworkInterface.GetIsNetworkAvailable())
            {
                TextBox.Text = "Online";
            }
            else
            {
                TextBox.Text = "Offline";
            }

            NetworkChange.NetworkAddressChanged += new NetworkAddressChangedEventHandler(NetworkChange_NetworkAddressChanged);
        }

        private void NetworkChange_NetworkAddressChanged(object sender, EventArgs e)
        {
            if (NetworkInterface.GetIsNetworkAvailable())
            {
                TextBox.Text = "Online";
            }
            else
            {
                TextBox.Text = "Offline";
            }
        }
    }
}


追記

「ネットワーク接続の有無を確認するのであればNetworkAddressChangedよりもNetworkAvailabilityChangedを使った方が良いかも」@さくさんせんせー

こういうのがあるっぽいのでNetworkAvailabilityChangedのほうがよさげですね。