title: Async WebRequest Timeout Windows Phone 7
body: <p>I'm wondering what the "right" way of timing out an HttpWebRequest is on Windows Phone7?</p>
  
  <p>I've been reading about ThreadPool.RegisterWaitForSingleObject() but this can't be used as WaitHandles throw a Not implemented exception at run time.</p>
  
  <p>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. </p>
  
  <p>Here's my existing code sans timeout, can someone please show me how I would add a timeout to this?</p>
  
  <pre><code>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);
  
         }
  }
  </code></pre>