2012-05-23 5 views
0

네트워크로 작업해야하는 Windows Phone 7 앱을 개발 중입니다.NetworkChange.NetworkAddressChanged 이벤트가 실행되지 않습니다.

NetworkAddress를 사용할 수있게되면 응용 프로그램이 연결되기를 원합니다. 그래서 NetworkChange.Networkaddresschanged를 사용했습니다. 난 에뮬레이터에서 내 애플 리케이션을 테스트했다. 처음으로 작동하지만 네트워크가 없으므로 아무 것도하지 않습니다. 이 NetworkAddresschanged는 네트워크가 사용 가능할 때 두 번째로 실행되지 않습니다.

내 코드는 네트워크 내가 NetworkAddressChange에 대리자를 연결하면 해당 시간 치우는 때 나는 Networkdownevent() 전화

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(); 
       } 
      } 
     } 
    } 

입니다.

왜 이런 일이 발생하는지 알 수 없습니다.

+1

네트워크 상태의 변화를 어떻게 테스트하고 있습니까? –

+0

내 컴퓨터 네트워크를 켜거나 끄기 – rakesh

답변

1

기본 연결이므로 전화기에 호스트 PC에 대한 USB 연결이 표시되므로 연결된 PC의 네트워크 연결을 변경해도 전화에 영향을 미치지 않습니다.

이것은 디버거가 연결된 상태로 테스트 할 수없는 시나리오 중 하나입니다. 디버그 출력은 첨부되지 않은 채로 장치에 저장/표시해야합니다.
테스트를 위해 휴대 전화를 Wi-Fi 전용으로 연결 한 다음 액세스 포인트를 켜거나 끄고 연결 상태를 제어하는 ​​것이 좋습니다. (이것은 내가 그런 상황에 대해 알고있는 가장 간단한 기술입니다.)

+0

이런 종류의 시나리오를 수행하는 가장 좋은 방법입니까? 에뮬레이터로이 시나리오를 구축 할 여지가 있습니까? – Richard

관련 문제