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