Com.Aote.Behaviors.AsyncActionFactory.OnActionCompleted C# (CSharp) Method

OnActionCompleted() protected method

某个子异步动作完成后的,检查异步动作状态表,还有未完成的,继续等待。 如果所有子动作都完成了,看有没有执行失败的动作,只有所有动作都执行成功,整个动作组才算执行成功。
protected OnActionCompleted ( IAsyncAction action, AsyncCompletedEventArgs args ) : void
action IAsyncAction 完成工作的子异步动作
args System.ComponentModel.AsyncCompletedEventArgs 子异步动作完成工作时的参数
return void
        protected override void OnActionCompleted(IAsyncAction action, AsyncCompletedEventArgs args)
        {
            //注册异步动作状态
            this.asyncActions[action] = args;
            //如果还有动作没有完成,直接返回
            if ((from a in this.asyncActions.Values where a == null select a).Count() != 0)
            {
                return;
            }
            IsBusy = false;
            //如果有失败动作,把所有失败信息合并到一起,通知失败了
            var errors = from a in this.asyncActions.Values where a.Error != null select a;
            if (errors.Count() != 0)
            {
                State = State.Error;
                //把所有错误结果填入结果中
                foreach(IAsyncAction key in errors)
                {
                    //把子的出错信息复制过来,子不能是异步动作组
                    Errors.Add(new ErrorInfo(key.Name, key.Error));
                }
                OnCompleted(errors.First());
            }
            //否则,通知成功
            else
            {
                State = State.End;
                OnCompleted(new AsyncCompletedEventArgs(null, false, null));
            }
        }
    }
AsyncActionFactory