WP7 ,HttpWebRequest.BeginGetResponse,异步调用的回调函数不被执行
大家好。SDK WP7.1.
写了一个函数:
string getdataByUri(string param) { string result = ""; try { HttpWebRequest request = (HttpWebRequest)System.Net.WebRequest.Create("http://192.168.120.71:8080/ExtJS/qv"); request.Method = "post"; //异步方法提交参数(将参数写入流中) IAsyncResult iac = request.BeginGetRequestStream( ReadCallbackForPostParam, new object[] { request, param }); //挂起当前线程 allDone.WaitOne(); //异步方法获取Response allDone.Reset(); IAsyncResult iac1 = request.BeginGetResponse( ReadCallbackForGetData, request); //----------运行到这,就一直挂起了,回调函数ReadCallbackForGetData始终不能被执行。 //服务端代码我跟踪过,BeginGetResponse执行后,服务端能正确返回. //如果注释掉 allDone.WaitOne();,回调函数ReadCallbackForGetData能被执行 allDone.WaitOne(); MessageBox.Show("成功返回"); } catch (Exception err) { throw err; } return result; } //回调函数,服务端返回后,应该执行这个函数 void ReadCallbackForGetData(IAsyncResult ar) { try { //object[] par = (object[])ar.AsyncState; HttpWebRequest request = ar.AsyncState as HttpWebRequest; if (request != null) { HttpWebResponse response = request.EndGetResponse(ar) as HttpWebResponse; System.IO.Stream streamResponse = response.GetResponseStream(); System.IO.StreamReader streamReader = new System.IO.StreamReader(streamResponse, System.Text.Encoding.UTF8); string strResult = streamReader.ReadToEnd(); allDone.Set(); } } catch (Exception err) { MessageBox.Show(err.Message); } }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
HttpWebRequest
不是这样玩的哦。建议使用WebClient来完成你需要的功能。还有就是现在OSChina.net也有WP7客户端了,你可以试一下
http://www.oschina.net/mobile