0

ネットワークでの作業に必要な Windows Phone 7 アプリを開発しています。

NetworkAddress が使用可能になるように変更されたときに、アプリケーションを接続したかったのです。そこで、NetworkChange.Networkaddresschanged を使用しました。エミュレーターでアプリをテストしていました。初めて起動しますが、ネットワークがないため何もしません。この NetworkAddresschanged は、ネットワークが使用可能になったときに 2 回目に起動することはありません。

私のコードは

    public void OnNetworkDownEvent()
    {
        lock (_networkChange)
        {
            var handler =_OnNetworkDown;
            if (handler != null)
            {
                _OnNetworkDown();
            }
            Deployment.Current.Dispatcher.BeginInvoke(() =>
            {
                NetworkChange.NetworkAddressChanged -= OnNetworkChange;
                NetworkChange.NetworkAddressChanged += OnNetworkChange;
            });


            _connectionDown = true;

            Monitor.Wait(_networkChange);
            OnNetworkUpEvent();
        }
    }


    public void OnNetworkUpEvent()
    {
        var handler = _OnNetworkUp;
        if (handler != null)
        {
            _OnNetworkUp();



        }
    }

    private void OnNetworkChange(object sender, EventArgs e)
    {
        lock(_networkChange)
        {
            if(NetworkInterface.GetIsNetworkAvailable())
            {

                if (_connectionDown)
                {
                    _connectionDown = false;
                    Monitor.Pulse(_networkChange);
                    //OnNetworkUpEvent();
                }
            }
        }
    }

ネットワークがダウンしたときに呼び出しますNetworkdownevent()。そのとき、デリゲートを NetworkAddressChange にアタッチします。

なぜこれが起こっているのかわかりません。

4

1 に答える 1

1

電話機は、ホスト PC への USB 接続をプライマリ接続として認識するため、接続された PC のネットワーク接続を変更しても電話機には影響しません。

これは、デバッガーを接続してテストできないシナリオの 1 つです。接続されていないデバイスにデバッグ出力を保存/表示する必要があります。
テストでは、電話を WiFi のみに接続し、アクセス ポイントをオンまたはオフにして接続状態を制御することをお勧めします。(これは、このような状況で私が知っている最も簡単なテクニックです。)

于 2012-05-23T13:49:39.997 に答える