C#学习教程:等待HttpWebRequest.BeginGetResponse在WindowsPhone7中完成一切正常,直到我到达我应该调用的地方privatestaticManualResetEventallDone=newManualResetEvent(false);...request.BeginGetResponse(newAsyncCallback(GetResponseCallback),请求);allDone.WaitOne();Debug.WriteLine("全部完成!");在GetResponseCallback:privatevoidGetResponseCallback(IAsyncResultasynchronousResult){try{request=(HttpWebRequest)asynchronousResult.AsyncState;response=(HttpWebResponse)request.EndGetResponse(asynchronousResult);全做完了。(异常e){Debug.WriteLine(“在GetResponseCallback中出现异常:”+e.Message);}}调用allDone.WaitOne();它只是挂起...有什么建议吗?这只是WP7平台上异步术语中block/await的轻微变化。结果是用户始终能够与UI进行交互。将对您的完成代码(在本例中为writeline)的调用移动到CompletedEventHandler中,对于任何UI更新,回调到UI线程Dispatcher.BeginInvoke(()=>{/*您的UI更新代码*/})如果有是执行异步操作时不应与之交互的任何UI元素,可以隐藏或禁用这些控件。老实说,这不是一个好主意。在主(UI)线程上等待将锁定手机并创建无响应的UI。从长远来看,最好不要在WP7和Silverlight中点击异步网络访问,代码可能会更复杂,你最终会得到很多需要回调的方法,但是拥有一个响应更快的UI比锁定它要好。varrequest=WebRequest.CreateHttp(uri);request.BeginGetResponse(r=>{varresponse=request.EndGetResponse(r);//Dothingsresponsehere},null);//让方法结束而不是等待遇到同样的问题但是当我用新的替换WP7图像时解决了。解锁图像会导致此问题。这似乎是模拟器的限制。我还没有尝试过,但我相信在解锁的wp7模拟器上运行它应该可以解决问题。http://forum.xda-developers.com/showthread.php?p=11148176#post11148176另请注意,如果ManualResetEvent从未发生,此WaitOne调用将永远不会返回:http://msdn.microsoft.com/en-us/library/bb299385.aspx您可能想将allDone.Set()移到try..catch之外。否则,如果出现异常并且启动异步操作的线程将挂起,则永远不会设置事件。也就是说,你要写:以上就是C#学习教程:WaitingforHttpWebRequest.BeginGetResponse在WindowsPhone7中完成分享,如果对大家有用,需要详细了解C#学习教程,我希望大家多多关注——try{request=(HttpWebRequest)asynchronousResult.AsyncState;response=(HttpWebResponse)request.EndGetResponse(asynchronousResult);}catch(Exceptione){Debug.WriteLine("GetResponseCallback异常:"+e.Message);}全做完了。放();本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
