2012-04-20 3 views
2

나는 다소 간단한 질문이 있습니다.HTTPWebRequest가 WIFI를 깨우니까?

HttpWebRequest을 수행하기 위해 BackgroundAgents (Periodic agents)를 사용하여 WiFi (인터넷) 연결이 필요한 몇 가지 백그라운드 작업을 수행합니다. 두 번째 참조 HttpWebRequest에서 언급했듯이 Windows Phone이 잠겨 있거나 1 분 이상 유휴 상태이면 WiFi가 비활성화되어있는 것이 문제입니다.

나는에 따라 두 가지 중요한 질문은 내가 읽고 알고 때까지 시도 것을 :

  1. 마이크로 소프트는 정기적으로 새 이메일 또는 기타 알림 확인하기 위해 미리 정의 된 간격에 따라 무선 랜이 가능합니까? 대답이 '예'인 경우 배경 담당자가이 간격 동안 일정을 다시 잡고 실행합니까?
  2. 내가 알기 전까지는 HttpWebRequest가 잠기거나 잠겨 있으면 1 분 이상 유휴 상태 일 때까지는 깨우지 않습니다. 그럴까요? HttpWebRequest는 전화가 잠겨 있거나 1 분이 지나면 잘 작동한다고 많은 사람들이 말합니다. 나는 그것을 할 수 없었다.

감사합니다.

샘플 코드 :

protected override void OnInvoke(ScheduledTask task) 
    {    
     ScheduledActionService.LaunchForTest(task.Name, TimeSpan.FromSeconds(120)); 

     MakeHttpRequest("test"); 
    } 
private void MakeHttpRequest(string position) 
    { 
     if (position != null) 
     { 
      var request = (HttpWebRequest)WebRequest.Create(
      new Uri("http://mydomain.com/Testing/Details/"+position)); 
      request.BeginGetResponse(r => 
      { 
       var httpRequest = (HttpWebRequest)r.AsyncState; 
       var httpResponse = (HttpWebResponse)httpRequest.EndGetResponse(r); 

       using (var reader = new StreamReader(httpResponse.GetResponseStream())) 
       { 
        var response = reader.ReadToEnd(); 

        Deployment.Current.Dispatcher.BeginInvoke(new Action(() => 
        { 
        })); 
       } 
      }, request); 
     } 
     this.NotifyComplete(); 
    } 

PS :이 코드를 실행하면 응용 프로그램이 USB 케이블 모두를 사용하여 컴퓨터에 연결되어있는 동안 것을 명심하시기 바랍니다 잘 실행됩니다. 그것이 내가 HttpWebRequest를 수행하기 위해 전화 + WiFi를 깨우지 않는 배경 작업자와 관련된 문제라고 믿는 이유입니다.

+0

일부 소스 코드를 보여주십시오 ... 당신은 무엇을 시도 했습니까? – Yahia

+0

감사합니다. @Yahia. 소스 코드가 추가되었습니다! – glarkou

+0

어떤 BackgroundAgent 클래스를 사용하고 있습니까? –

답변

1

전화가 연결되어 충전되지 않는 한 잠긴 후 Windows Phone에서 wifi를 다시 활성화 할 수 없다는 사실을 일상적으로 전화를 사용하는 것이 나의 경험입니다. 또한 이미 Wi-Fi를 사용 중지하기 전에 완료되기 시작한 데이터 전송을 허용합니다.

그러나 전화가 주기적으로 다시 연결을 시도해도 일부 무선 공급자는 사용자가 다시 연결할 때마다 인증 페이지로 리디렉션되고 Windows Phone은이 상황을 처리하지 않습니다.

실제로 사용자가 전화를 사용할 때 데이터 서비스를 사용할 수 있다고 보장 할 수 없으므로 문제를 처리하는 것이 응용 프로그램 코드의 일반적인 경로의 일부 여야합니다.

+0

답변 해 주셔서 감사합니다.전화가 주기적으로 다시 연결하려고하는지 알고 있습니까? – glarkou

+0

@salamis - 저는 그렇게 믿지 않습니다. 그 효과에 대한 어떠한 문서도 찾을 수 없지만 apphub 및 전화 지원 포럼 (Google의 경우)에 대한 일화적인 증거가 있습니다. 그것도 재접속을 시도하지 않는다는 나의 경험이었습니다. –

+0

고마워. 따라서 유일한 해결책은 코드의 일부로 문제를 처리하는 것입니다. 네트워크가 사용 가능한 경우에만 백그라운드 작업자를 실행하십시오. 그것이 WiFi, 3G, 3.5G 또는 무엇이더라도. 고마워. – glarkou

관련 문제