NetworkChange.NetworkAddressChanged事件不会触发

时间:2012-05-23 10:16:30

标签: c# .net windows-phone-7 sockets

我正在开发一个需要与网络配合使用的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。

我不知道为什么会这样。

1 个答案:

答案 0 :(得分:1)

手机将看到与主机PC的USB连接,因为它是主要连接,因此更改连接的PC的网络连接不会对手机产生影响。

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