私は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
}