2012-05-23 5 views
0

Я разрабатываю приложение Windows Phone 7, которое требуется для работы с сетью.NetworkChange.NetworkAddressChanged событие не срабатывает

Я хотел, чтобы мое приложение подключалось, когда 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(), когда сеть down.And в то время я придаю делегата NetworkAddressChange.

Я не знаю, почему это происходит.

+1

Как вы тестируете изменения в состоянии сети? –

+0

, переключив мою компьютерную сеть на – rakesh

ответ

1

Телефон будет видеть подключение USB к главному компьютеру в качестве основного подключения, поэтому изменения в сетевом подключении подключенного ПК не повлияют на телефон.

Это один из сценариев, в которых вы не можете протестировать с прикрепленным отладчиком. Вам придется хранить/отображать вывод отладки на устройстве, если он не подключен.
Для тестирования я рекомендую подключить телефон только к WiFi, а затем управлять состоянием соединения, включив или выключив точку доступа. (Это самый простой метод, о котором я знаю для такой ситуации.)

+0

. Это лучший способ сделать такой сценарий? Разве это не так, чтобы построить этот сценарий с эмулятором? – Richard

Смежные вопросы