1
我已经写了这个代码获取返回值:WP7从异步HttpWebRequest的
private void button1_Click(object sender, RoutedEventArgs e)
{
HttpWebRequest request = SendRequests.CreateRequest(serverTextBox.Text);
IAsyncResult result = request.BeginGetResponse(new AsyncCallback(ReadWebRequestCallback), request);
}
private void ReadWebRequestCallback(IAsyncResult callbackResult)
{
HttpWebRequest myRequest = (HttpWebRequest)callbackResult.AsyncState;
try
{
HttpWebResponse myResponse = (HttpWebResponse)myRequest.EndGetResponse(callbackResult);
using (StreamReader httpwebStreamReader = new StreamReader(myResponse.GetResponseStream()))
{
string results = httpwebStreamReader.ReadToEnd();
loginValue = Parser.ParseLoginValue(results);
}
myResponse.Close();
}
catch (WebException we)
{
//
}
}
我在这一点上的问题是,点击按钮后,我需要的BeginGetResponse的返回值(这里loginValue)去随着应用程序的执行。 我知道这是违反异步调用的整个意义,但是,有一种方法可以在继续执行主线程之前等待结果?
您也可以用一些可以禁用所有控件的矩形覆盖页面的根框架,直到Web通话完成。 是的。 Windows Phone中的所有网络通话都是异步的。 – Oleg 2012-08-20 06:45:51
最好将根框架的“IsHitTestVisible”设置为false。这将禁用所有触摸事件... – 2012-08-20 10:57:33
您可以将IsHitTestVisible设置为false,但没有关于发生什么的视觉指示,应用程序将显示为已冻结(同样,这也可能是真实的)。您需要为用户提供某种反馈,以了解正在发生的事情以及为什么他们不能再与应用程序交互。 – 2012-08-25 13:52:07