0

我正在开发一个需要使用网络的 windows phone 7 应用程序。

我希望我的应用程序在 NetworkAddress 更改为可用时连接。所以我使用了 NetworkChange.Networkaddresschanged。我正在模拟器上测试我的应用程序。它第一次启动,但由于没有网络,我什么也不做。当网络可用时,此 NetworkAddresschanged 不会第二次启动。

我的代码是

    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 的网络连接的更改不会对手机产生影响。

这是您无法使用附加的调试器进行测试的一种情况。您必须在未连接的设备上存储/显示调试输出。
对于测试,我建议让手机仅连接到 WiFi,然后通过打开或关闭接入点来控制连接状态。(对于这种情况,这是我所知道的最简单的技术。)

于 2012-05-23T13:49:39.997 回答