using Milimoe.FunGame.Core.Interface.Base; namespace Milimoe.FunGame.Core.Library.Common.Architecture { /// /// 任务的等待器,可以设置在任务完成后需要的操作 /// public struct TaskAwaiter { /// /// 任务是否完成 /// public readonly bool IsCompleted => awaiter.IsCompleted; /// /// 捕获到的异常 /// public readonly System.Exception Exception => awaiter.Exception; /// /// 内部实现类 /// 实现参见 /// private ITaskAwaiter awaiter; /// /// 构造一个等待器 /// /// internal TaskAwaiter(ITaskAwaiter awaiter) { this.awaiter = awaiter; } /// /// 返回TaskAwaiter可以连续的调用方法 /// 但是意义不大,前一个OnCompleted方法并不会等待下一个方法 /// 可以理解为并行广播 /// /// /// public TaskAwaiter OnCompleted(Action action) { awaiter = awaiter.OnCompleted(action); return this; } /// /// 在捕获到异常时,将触发Error事件 /// /// /// public TaskAwaiter OnError(Action action) { awaiter = awaiter.OnError(action); return this; } } }