我正在進行REST調用,服務器端響應採用XML形式。我正在異步進行此調用。我已經測試它作爲一個控制檯應用程序,它的工作原理應該如此。但是,當我在XBOX,上測試它時,異步請求永遠不會完成。我的processVideo方法分析XML並將項目放入List中。我需要從另一個類引用此列表,所以我添加了(result.IsCompleted == false)以確保異步調用在我引用和使用List之前完成。看起來,異步請求從來沒有完成,並鎖定用戶界面,任何想法?IAsyncResult未完成並鎖定UI
public void initilaizeRest()
{
WebRequest request = HttpWebRequest.Create(URI);
request.Method = GET;
// RequestState is a custom class to pass info to the callback
RequestState state = new RequestState(request, URI);
IAsyncResult result = request.BeginGetResponse(new AsyncCallback(getVideoList), state);
Logger.Log("Querystate :"+QUERYSTATE+" URI:"+URI);
/// Wait for aynchronous response to be completed
while (result.IsCompleted == false)
{
Logger.Log("Sleeping");
Thread.Sleep(100);
}
}
public void getVideoList(IAsyncResult result)
{
RequestState state = (RequestState)result.AsyncState;
WebRequest request = (WebRequest)state.Request;
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(result);
//Process response
switch (QUERYSTATE)
{
case (int)Querystate.SERIESQUERY:
Logger.Log("Processing series state");
processSeries(response);
break;
case (int)Querystate.VIDEOQUERY:
Logger.Log("Processing video state");
processVideo(response);
break;
}
}
public void processVideo(HttpWebResponse response)
{
//parses XML into an object and places items in a LIST
}
永遠不是很長的時間。你真的*等了多久? – phoog 2012-08-01 19:01:50
@phoog? 。比我需要等待的時間還要長。該列表非常短,UI被鎖定,意味着它沒有做它應該做的事情。 – Fabii 2012-08-01 19:10:10