2014-02-05 5 views
0

며칠 전 C#에서 WinCE 5.0에서 실행되는 바코드 스캐너를 Compact Framework 3.5를 사용하여 코딩하기 시작했습니다. 비동기식 HttpWebRequest를 사용하여 예상 한대로 수행하기가 어려웠습니다. (특히 CF3.5이기 때문에). 이제는 일종의 ... 그러나 요청이 완료 될 때까지 1-3 분이 걸립니다.내 AsyncCallback에 몇 분이 걸리는 이유는 무엇입니까? (WinCE 5.0 바코드 스캐너에서 Compact Framework 3.5를 사용하는 C#)

private void xmlRequestButton_Click(object sender, EventArgs e) 
{ 
    System.Uri myUri = new System.Uri("http://www.mydomain.de/someFolder/index.php"); 
    HttpWebRequest myRequest = (HttpWebRequest)HttpWebRequest.Create(myUri); 
    myRequest.Method = "POST"; 
    myRequest.ContentType = "text/html"; 
    myRequest.SendChunked = true; 

    myRequest.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), myRequest); 
} 

private static void GetRequestStreamCallback(IAsyncResult callbackResult) 
{ 
    HttpWebRequest myRequest = (HttpWebRequest)callbackResult.AsyncState; 
    Stream postStream = myRequest.EndGetRequestStream(callbackResult); 

    string postData = "testparam=testvalue"; 
    byte[] byteArray = Encoding.UTF8.GetBytes(postData); 

    postStream.Write(byteArray, 0, postData.Length); 
    postStream.Close(); 

    myRequest.BeginGetResponse(new AsyncCallback(GetResponsetStreamCallback), myRequest); 
} 

private static void GetResponsetStreamCallback(IAsyncResult callbackResult) 
{ 
    HttpWebRequest request = (HttpWebRequest)callbackResult.AsyncState; 
    HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(callbackResult); 

    Stream streamResponse = response.GetResponseStream(); 
    StreamReader streamRead = new StreamReader(streamResponse); 
    string responseString = streamRead.ReadToEnd(); 
    Console.WriteLine(responseString); 

    streamResponse.Close(); 
    streamRead.Close(); 

    response.Close(); 
    allDone.Set(); 
} 

내 웹 서비스가 액세스 할 때마다 기록합니다. 그것은 단지 "성공"을 울립니다. 처음에는 WebRequest가 전혀 작동하지 않는다고 생각했습니다. 하지만 실수로 디버깅을 멈추지 않고 얼마 동안 작동하지 않을 때 나는 제대로 작동한다는 것을 깨달았지만 오랜 시간이 걸렸습니다. 장치는 심지어 콘솔에 응답 "성공"을 기록했습니다. 그렇게 오래 걸릴 수 있습니까? 내가 놓친 게 있니?

내 목표는 장치가 일부 바코드를 스캔 한 다음 제품 이름 및 기타 정보를 제공하는 웹 서비스에 접속한다는 것입니다.

+0

장치가 인터넷 (WiFi, 셀 데이터 등)에 어떻게 연결되어 있습니까? –

+0

오, 죄송합니다 : Wi-Fi를 통해 신호 강도가 가득 연결되어 있습니다. – alpha20020

+0

웹 서비스가 문제가 아닌지, 예를 들어 SoapUI, 작은 테스트 프로그램 또는 비슷한 것으로 테스트 했습니까? –

답변

0

왜이 SCU 클라이언트를 사용합니까? 이 CE5 장치 (모델은 무엇입니까?)에 사전 설치된 적절한 제품이 있습니까?

사용하는 서버가 인터넷이나 인트라넷을 통해 사용 가능합니까? TCP/IP DNS 또는 라우팅 문제가있는 것 같습니다. vxUtils (Cambridge Software - Free one) ping 등을 사용해 연결을 확인하십시오.

PC가 인터넷 연결 (ActiveSync/WMDC passthru)을 위해 장치에서 사용될 수 있다는 사실을 잘 알고 있습니다. 활성 ActiveSync/WMDC 연결없이 TCP/IP 및 응용 프로그램을 사용해보십시오. 장치가 USB (WMDC)에 연결되어 있지 않더라도 VS가 장치의 IP 주소를 기억하고 다음 세션에 사용하기 때문에 처음 배포/디버그 세션을 시작한 후에도 디버그 할 수 있습니다. Visual Studio SmartDevice 원격 디버깅을 참조하십시오.

네트워크 문제를 발견하지 못하면 자세한 결과를 확인하십시오.