Function标识 | IEnumerator | async |
开始执行 | StartCoroutine(Func()) | Func() |
等待 | yield return new WaitForSeconds(10) | await Task.Delay(1500) |
等待执行 | yield return Func(); | await Func() |
批量执行 | 需要自己构建 | IEnumerator i1 = Tesfst2();yield return i1; Task.WaitAll(f1(),f2()); await Task.WhenAll(f1(),f2()); Wait 阻塞的 When是异步的非阻塞的 |
停止 | StopCoroutine | 通过CancellationTokenSource |
返回值 | 无 | Task;需要在Async内Func内接受返回值 |
自己为参数 | IEnumerator F1(IEnumerator f){ yield return f;} | public async void F1(Task t2){ await t2;} |
Call stack | 不保存Call Stack信息 | 保存Call Stack 信息 |
Try Catch | 不支持 | 支持 |
代码Throw exception | 报错 | 不报错 |
内部停止执行 | yield break; | void/return; Task / return type; |
生命周期 | Mono Behavior内 | 主线程 |
支持 | 属于Unity引擎特性 | 属于C#特性,Unity2017支持 |