private void ProcessTask(object state) { RevaleeTask task = (RevaleeTask)state; if (!task.AttemptCallback()) { return; } try { HttpWebRequest request = PrepareWebRequest(task); Task <WebResponse> responseTask = Task.Factory.FromAsync <WebResponse>(request.BeginGetResponse, request.EndGetResponse, request); responseTask.ContinueWith(t => { HttpWebResponse response = null; try { response = (HttpWebResponse)t.Result; ProcessWebResponse(task, response); } catch (WebException wex) { ProcessWebException(task, wex); } catch (AggregateException aex) { WebException wex = ExtractWebException(aex); if (wex != null) { ProcessWebException(task, wex); } else { // Non-retryable error CompleteFailedTask(task, FormatGenericExceptionMessage(task, aex)); } } finally { if (response != null) { response.Close(); } } }); } catch (WebException wex) { ProcessWebException(task, wex); } catch (SecurityException sex) { // Non-retryable error CompleteFailedTask(task, FormatGenericExceptionMessage(task, sex)); } }
private void ProcessTask(object state) { RevaleeTask task = (RevaleeTask)state; if (!task.AttemptCallback()) { return; } try { HttpWebRequest request = PrepareWebRequest(task); Task <WebResponse> responseTask = Task.Factory.FromAsync <WebResponse>(request.BeginGetResponse, request.EndGetResponse, request); responseTask.ContinueWith(t => { try { HttpWebResponse response = null; try { response = (HttpWebResponse)t.Result; ProcessWebResponse(task, response); } catch (AggregateException aex) { if (aex.InnerExceptions.Count == 1 && aex.InnerExceptions[0] is WebException) { ProcessWebException(task, aex.InnerExceptions[0] as WebException); } else { aex = aex.Flatten(); if (aex.InnerExceptions.Count > 0) { throw aex.InnerExceptions[0]; } else { throw; } } } finally { if (response != null) { response.Close(); } } } catch (WebException wex) { ProcessWebException(task, wex); } catch (AggregateException aex) { // Non-retryable error CompleteFailedTask(task, aex); } }); } catch (WebException wex) { ProcessWebException(task, wex); } catch (SecurityException sex) { // Non-retryable error CompleteFailedTask(task, sex); } }