Async WebRequest Timeout Windows Phone 7
- by Tyler
Hi All,
I'm wondering what the "right" way of timing out an HttpWebRequest is on Windows Phone7?
I've been reading about ThreadPool.RegisterWaitForSingleObject() but this can't be used as WaitHandles throw a Not implemented exception at run time.
I've also been looking at ManualReset events but A) Don't understand them properly and B) Don't understand how blocking the calling thread is an acceptable way to implement a time out on an Async request.
Here's my existing code sans timeout, can someone please show me how I would add a timeout to this?
public static void Get(Uri requestUri, HttpResponseReceived httpResponseReceivedCallback, ICredentials credentials, object userState, bool getResponseAsString = true, bool getResponseAsBytes = false)
{
var httpWebRequest = (HttpWebRequest)WebRequest.Create(requestUri);
httpWebRequest.Method = "GET";
httpWebRequest.Credentials = credentials;
var httpClientRequestState = new JsonHttpClientRequestState(null, userState, httpResponseReceivedCallback, httpWebRequest, getResponseAsString, getResponseAsBytes);
httpWebRequest.BeginGetResponse(ResponseReceived, httpClientRequestState);
}
private static void ResponseReceived(IAsyncResult asyncResult)
{
var httpClientRequestState = asyncResult.AsyncState as JsonHttpClientRequestState;
Debug.Assert(httpClientRequestState != null, "httpClientRequestState cannot be null. Fatal error.");
try
{
var webResponse = (HttpWebResponse)httpClientRequestState.HttpWebRequest.EndGetResponse(asyncResult);
}
}