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