ブラウザー外実行の関連API
ブラウザー外実行では、Webブラウザーにホストされた状態のSilverlightとは違い、実行時にネットワークに接続されいない可能性があります。また、後述するブラウザー外実行の制限のため、起動している状態によってプログラムで実行する処理を分岐させたい場合もあるでしょう。
ブラウザー外で実行されているかのチェック
現在実行されているSilverlightアプリケーションがブラウザー内で実行されているか、ブラウザー外で実行されているかのチェックを行うためには、ApplicationクラスのIsRunnningOutOfBrowserプロパティーをチェックします。リスト3はMainPageのコンストラクターで現在のアプリケーションがブラウザー外で実行されているかどうかを調べているコードです。
public MainPage() { InitializeComponent(); if (Application.Current.IsRunningOutOfBrowser) ブラウザー外で実行されているか.Text = "ブラウザー外で実行中"; else ブラウザー外で実行されているか.Text = "Webブラウザー内で実行中"; }
このコードを実行し、Webブラウザーで実行されたSilverlightと、ブラウザー外実行で実行された場合の実行結果を図9に示します。
ネットワーク状態の取得
実行されているSilverlightアプリケーションのネットワーク状態を取得するためには、NetworkInterfaceクラスのGetIsNetworkAvailableメソッドでチェックを行います。
リスト4はNetworkChangeクラスのNetworkAddressChangedイベントを補足することで、ネットワーク状態に変更があった場合にネットワークが利用可能かをチェックしている例です。
public MainPage() { InitializeComponent(); ネットワークの状況の表示(); NetworkChange.NetworkAddressChanged += NetworkChange_NetworkAddressChanged; } private void NetworkChange_NetworkAddressChanged(object sender, EventArgs e) { ネットワークの状況の表示(); } private void ネットワークの状況の表示() { if (NetworkInterface.GetIsNetworkAvailable()) ネットワークの状況.Text = "接続中"; else ネットワークの状況.Text = "切断中"; }
このコードを実行し、ネットワークインターフェイスを有効・無効を切り替えた場合の実行結果を図10に示します。