//主要是用来判斷是否完成任務 IEnumerator TaskStateMonitor() { yield return(null); IEnumerator e = coroutine; while (state == State.Running) { if (state == State.Paused) { yield return(null); } else { //IEnumerator 有current ,movenext,reset //不停地執行new出来的任務,因为new出来的任務是Enumrator,直到不能movenext了 if (e != null && e.MoveNext()) { yield return(e.Current); } else { state = State.Finished; } } } FinishedHander handler = Finished; if (handler != null) { handler(true); //true } }
void TaskFinished(bool isFinished) { FinishedHander handler = Finished; if (handler != null) { handler(isFinished); } }