繁体   English   中英

为什么我的AsyncCallback需要几分钟? (在Win CE 5.0条形码扫描仪上使用Compact Framework 3.5的C#)

[英]Why does my AsyncCallback takes minutes? (C# using Compact Framework 3.5 on Win CE 5.0 Barcode Scanner)

几天前,我开始使用Compact Framework 3.5为在C#上WinCE 5.0上运行的条形码扫描仪进行编码。 我很难让我的异步HttpWebRequest来完成它应该做的事情。 (特别是因为它是CF3.5。)现在,它可以工作了……但是要完成请求需要1-3分钟。

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

我的Web服务每次访问时都会记录日志。 它只是呼应“成功”。 起初,我认为WebRequest根本不起作用。 但是当我无意中停止了一段时间的调试时,我意识到调试是可行的,但是花费了很长时间。 设备甚至将答案“成功”记录到控制台。 那么怎么可能花那么长时间呢? 我有什么想念的吗?

我的目标是设备扫描一些条形码,然后联系网络服务,该服务会返回产品名称和其他信息。

为什么使用此SCU客户端? 此CE5设备(哪种型号)上没有预装合适的设备?

您使用的服务器是否可以通过Internet或Intranet使用? 看起来您有TCP / IP DNS或路由问题。 请尝试vxUtils(剑桥软件-免费)ping等来验证连接。

您已经意识到设备可能会使用PC进行Internet连接(ActiveSync / WMDC passthru)。 请在没有活动的ActiveSync / WMDC连接的情况下尝试使用TCP / IP(和您的应用程序)。 您仍然可以在首次部署/调试会话开始后进行调试,因为VS会记住设备的IP地址并将其用于后续会话,即使设备未连接到USB(WMDC)。 另请参阅Visual Studio SmartDevice远程调试。

如果您找不到网络问题,请返回您的详细发现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM