C# 协同程序

312 阅读1分钟

概念

在主线程运行的同时,开启另一段逻辑处理,来协同当前程序运行。线程的调度由操作系统完成,协程的调度。

API

    开启协程:MonoBehavior.StartCoroutine(IEnumeratorroutine)
    
    终止协程:MonoBehavior.StopCoroutine(IEnumeratorroutine)
    
    终止当前 behaviour 上的所有协程:MonoBehavior.StopAllCoroutines()
    

协同程序中的细节

  1. 协程与普通函数一样,可被多次调用。
  2. 协程一旦被开启,总是试图将方法中的代码执行完,然后停止。
  3. 协程内若遇到 yield return null/0/1....;表示剩余代码将在下一帧继续执行。
  4. 在协程中若遇到 yield return new WaitForSeconds(n);表示剩余代码将在 n 秒后执行。

代码例子

{
    private void Start()
    {
        // 开启协程
        StartCoroutine("Fun");
        // 终止协程
        StopCoroutine("Fun");
    }

    IEnumerator Fun()
    {
        // 在主线程运行的同时处理的代码
        yield return 0;
    }
}