Beispiel #1
0
        private static void ReceiveCallback(SynchronizationContext context, MyWebRequest req, Action<Exception, byte[]> resultHandler)
        {
            try
            {
                //LogHelper.Instance.AddErrorLog("RestClient ReceiveCallback 1. " + req.Request.RequestUri.ToString(), null);

                IAsyncResult asyncResponseResult = req.Request.BeginGetResponse(new AsyncCallback(result =>
                {
                    WebResponse resp = null;
                    try
                    {
                        resp = req.Request.EndGetResponse(result);
                        //LogHelper.Instance.AddErrorLog("RestClient ReceiveCallback 2", null);

                    }
                    catch (Exception ex)
                    {
                        LogHelper.Instance.AddErrorLog("RestClient ReceiveCallback 3", ex);

                        if (null != resultHandler)
                        {
                            context.Post(_ =>
                            {
                                LogHelper.Instance.AddErrorLog("RestClient ReceiveCallback 4", null);

                                resultHandler(ex, null);
                            }, null);
                        }
                        return;
                    }

                    byte[] resultData = null;
                    try
                    {
                        resultData = CryptEncoder.Read(resp.GetResponseStream());
                        //LogHelper.Instance.AddErrorLog("RestClient ReceiveCallback 5", null);

                    }
                    catch (Exception ex)
                    {
                        LogHelper.Instance.AddErrorLog("RestClient ReceiveCallback 6", null);

                        if (null != resultHandler)
                        {
                            LogHelper.Instance.AddErrorLog("RestClient ReceiveCallback 7", null);

                            context.Post(_ =>
                            {
                                LogHelper.Instance.AddErrorLog("RestClient ReceiveCallback 8", null);

                                resultHandler(ex, null);
                            }, null);
                        }
                        return;
                    }

                    //LogHelper.Instance.AddErrorLog("RestClient ReceiveCallback 9", null);

                    if (null != resultHandler)
                    {
                        context.Post(_ =>
                        {
                            //LogHelper.Instance.AddErrorLog("RestClient ReceiveCallback 10", null);

                            resultHandler(null, resultData);
                        }, null);
                    }
                }), null);

                ThreadPool.RegisterWaitForSingleObject(
                    asyncResponseResult.AsyncWaitHandle,
                    new WaitOrTimerCallback((state, timedOut) =>
                    {
                        try
                        {
                            if (timedOut)
                            {
                                LogHelper.Instance.AddErrorLog("time out : " + timedOut, null);

                                //if (null != resultHandler)
                                //{
                                //    context.Post(_ =>
                                //    {
                                //        resultHandler(new TimeoutException("AA AsyncGetWebResponse Exception"), null);
                                //    }, null);
                                //}
                                MyWebRequest request = state as MyWebRequest;
                                if (request != null && request.Request != null)
                                {
                                    request.Request.Abort();
                                }
                            }
                        }
                        catch (Exception exc)
                        {
                            if (null != resultHandler)
                            {
                                context.Post(_ =>
                                {
                                    resultHandler(exc, null);
                                }, null);
                            }
                        }
                        }),
                    req,
                    DefaultTimeout,
                    true);
            }
            catch (Exception ex)
            {
                LogHelper.Instance.AddErrorLog("RestClient ReceiveCallback 11", null);

                if (null != resultHandler)
                {
                    context.Post(_ =>
                    {
                        LogHelper.Instance.AddErrorLog("RestClient ReceiveCallback 12", null);

                        resultHandler(ex, null);
                    }, null);
                }
            }
        }
Beispiel #2
0
        private static void Receive(SynchronizationContext context, MyWebRequest req, object userState, Func<Exception, byte[], bool, object, bool> resultHandler)
        {
            try
            {
                req.Request.BeginGetResponse(new AsyncCallback(result =>
                {
                    WebResponse resp = null;
                    try
                    {
                        resp = req.Request.EndGetResponse(result);
                    }
                    catch (Exception ex)
                    {
                        //BusyToken.Hide();
                        if (null != resultHandler)
                        {
                            context.Post(_ =>
                            {
                                resultHandler(ex, null, req.IsCancel, userState);
                            }, null);
                        }
                        return;
                    }

                    byte[] resultData = null;
                    try
                    {
                        resultData = CryptEncoder.Read(resp.GetResponseStream());
                    }
                    catch (Exception ex)
                    {
                        //BusyToken.Hide();
                        if (null != resultHandler)
                        {
                            context.Post(_ =>
                            {
                                resultHandler(ex, null, req.IsCancel, userState);
                            }, null);
                        }
                        return;
                    }

                    //BusyToken.Hide();
                    if (null != resultHandler)
                    {
                        context.Post(_ =>
                        {
                            resultHandler(null, resultData, req.IsCancel, userState);
                        }, null);
                    }
                }), null);
            }
            catch (Exception ex)
            {
                //BusyToken.Hide();
                if (null != resultHandler)
                {
                    context.Post(_ =>
                    {
                        resultHandler(ex, null, req.IsCancel, userState);
                    }, null);
                }
            }
        }