示例#1
0
        protected void ProcessAction(PromiseInvocation promiseInvocation)
        {
            try
            {
                var resp = _chaosClient.Send(promiseInvocation.Invocation);

                promiseInvocation.Result = resp;
                if (promiseInvocation.Invocation.IsReturnTask)
                {
                    var returnType     = _typeFinder.Find(promiseInvocation.Invocation.ReturnTypeFullName);
                    var taskFromResult = DynamicMethod.GetTaskFromResult(returnType);
                    promiseInvocation.Result = taskFromResult(resp);
                }

                promiseInvocation.Resolve?.Invoke();
                promiseInvocation.WaitEvent.Set();
            }
            catch (Exception ex)
            {
                promiseInvocation.Exception = ex;
                promiseInvocation.Reject?.Invoke(ex);
                promiseInvocation.WaitEvent.Set();
            }
        }