我正在进行 REST 调用,服务器端响应采用 XML 的形式。我正在异步进行此调用。我已经将它作为控制台应用程序进行了测试,它可以正常工作。但是,当我在XBOX上测试它时,异步请求永远不会完成。我的 processVideo 方法解析 XML 并将项目放入列表中。我需要从另一个类中引用这个列表,所以我添加了(result.IsCompleted == false) 以确保在我引用和使用列表之前完成异步调用。似乎异步请求永远不会完成并锁定 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
}