簡體   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