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); } } }
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); } } }