Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 2 của 2
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Nạp dữ liệu và lập trình bất đồng bộ trong WP8

    Đây là một đoạn code lấy Get Response bất đồng bộ từ 1 trang web + data input cho trước, có một chút rắc rối là khi mình chạy nó trên Console thì load thành công trong khi trên Windows Phone 8 mình nhận thấy phương thức GetResponseCallBack không được gọi => không load được dữ liệu. Có ai biết lý do và cách để sửa không
    không hiểu sao trên WP8 mình không thể sử dụng được ManualResetEvent (mục đích là để tạo 1 hàm bên trong có các hoạt động bất đồng bộ nhưng vẫn trả về giá trị bằng cách Set ngay sau khi load bất đồng bộ thành công)

    Mã:
    using System;using System.Net;using System.IO;using System.Text;using System.Threading; class HttpWebRequestBeginGetRequest{    private static ManualResetEvent allDone = new ManualResetEvent(false);     private static string _parameter = "";    private static string _returnStr = "";    public static void Main()    {        HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://www.aao.hcmut.edu.vn/php/aao_tkb.php?goto=");        req.Method = "POST";        req.ContentType = "application/x-www-form-urlencoded";         req.BeginGetRequestStream(new AsyncCallback(GetRequestCallBack), req);        allDone.WaitOne();        Console.WriteLine(_returnStr);        Console.ReadLine();    }    private static void GetRequestCallBack(IAsyncResult i)    {        HttpWebRequest req2 = (HttpWebRequest)i.AsyncState;        Stream data = req2.EndGetRequestStream(i);         byte[] byteArr = Encoding.UTF8.GetBytes("HOC_KY=20131&mssv=&image=Xem--%3E");        data.Write(byteArr, 0, byteArr.Length);        data.Close();         req2.BeginGetResponse(new AsyncCallback(GetResponseCallBack), req2);    }    private static void GetResponseCallBack(IAsyncResult i)    {        HttpWebRequest req = (HttpWebRequest)i.AsyncState;        HttpWebResponse res = (HttpWebResponse)req.EndGetResponse(i);         StreamReader sr = new StreamReader(res.GetResponseStream());        _returnStr = sr.ReadToEnd();        //d.BeginInvoke(() => { parseHTMLData(_temp); });        sr.Close();        allDone.Set();    }}

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    WP8 hỗ trợ sẵn 2 từ khóa async vs await để thưc hiện các tác vụ bất đồng bộ. Bạn thử xem.

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •