public static void TransferCompletionToTask <T>(System.Threading.Tasks.TaskCompletionSource <T> tcs, System.ComponentModel.AsyncCompletedEventArgs e, Func <T> getResult, Action unregisterHandler)
        {
            if (e.UserState != tcs)
            {
                return;
            }

            try
            {
                unregisterHandler();
            }
            finally
            {
                if (e.Cancelled)
                {
                    tcs.TrySetCanceled();
                }
                else if (e.Error != null)
                {
                    tcs.TrySetException(e.Error);
                }
                else
                {
                    tcs.TrySetResult(getResult());
                }
            }
        }
Example #2
0
        public System.Threading.Tasks.Task <HttpWebHelperAsyncResult> ExecuteTaskAsync(IHttpWebRequest httpWebRequest, Stream requestBody, object state)
        {
            var tcs = new System.Threading.Tasks.TaskCompletionSource <HttpWebHelperAsyncResult>(state);

            try
            {
                ExecuteAsync(httpWebRequest, requestBody,
                             ar =>
                {
                    var asyncResult = (HttpWebHelperAsyncResult)ar;
                    if (asyncResult.IsCancelled)
                    {
                        tcs.TrySetCanceled();
                    }
                    if (asyncResult.Exception != null)
                    {
                        tcs.TrySetException(asyncResult.Exception);
                    }
                    else
                    {
                        tcs.TrySetResult(asyncResult);
                    }
                }, state);
            }
            catch (Exception ex)
            {
                tcs.TrySetException(ex);
            }

            return(tcs.Task);
        }
Example #3
0
        public System.Threading.Tasks.Task <FluentHttpAsyncResult> ExecuteTaskAsync(object state)
        {
            var tcs = new System.Threading.Tasks.TaskCompletionSource <FluentHttpAsyncResult>(state);

            try
            {
                ExecuteAsync(ar =>
                {
                    if (ar.IsCancelled)
                    {
                        tcs.TrySetCanceled();
                    }
                    if (ar.Exception != null)
                    {
                        tcs.TrySetException(ar.Exception);
                    }
                    else
                    {
                        tcs.TrySetResult(ar);
                    }
                }, state);
            }
            catch (Exception ex)
            {
                tcs.TrySetException(ex);
            }

            return(tcs.Task);
        }
        public System.Threading.Tasks.Task<HttpWebHelperAsyncResult> ExecuteTaskAsync(IHttpWebRequest httpWebRequest, Stream requestBody, object state)
        {
            var tcs = new System.Threading.Tasks.TaskCompletionSource<HttpWebHelperAsyncResult>(state);

            try
            {
                ExecuteAsync(httpWebRequest, requestBody,
                             ar =>
                             {
                                 var asyncResult = (HttpWebHelperAsyncResult)ar;
                                 if (asyncResult.IsCancelled) tcs.TrySetCanceled();
                                 if (asyncResult.Exception != null) tcs.TrySetException(asyncResult.Exception);
                                 else tcs.TrySetResult(asyncResult);
                             }, state);

            }
            catch (Exception ex)
            {
                tcs.TrySetException(ex);
            }

            return tcs.Task;
        }