最近在看ReadyPlayerMe的SDK,里面有个OperationExecutor写的不错,支持按照顺序,执行多个异步操作,支持取消。在此简单写一下主要架构
效果预览
先看看入口如何使用的:
private OperationExecutor<AvatarContext> executor;
/// 取消执行器
public void Cancel()
{
executor.Cancel();
}
//主要入口
var context = new AvatarContext();
//...
//创建执行器 设置多个异步操作
executor = new OperationExecutor<AvatarContext>(new IOperation<AvatarContext>[]
{
new UrlProcessor(),
new MetadataDownloader(),
new AvatarDownloader(),
//...
});
//...
context