NetworkChange.NetworkAddressChanged 事件不会触发

本文关键字:NetworkAddressChanged 事件 NetworkChange | 更新日期: 2023-09-27 18:34:57

我正在开发一个Windows Phone 7应用程序,该应用程序需要与网络配合使用。

我希望我的应用程序在网络地址更改可用时连接。所以我使用了NetworkChange.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。

我不知道为什么会这样。

NetworkChange.NetworkAddressChanged 事件不会触发

手机会将与主机电脑的 USB 连接视为其主连接,因此对所连接电脑的网络连接的更改不会影响手机。

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

相关文章:
  • 没有找到相关文章