private void SetUpdate() { //var item = enumerator; Func <IEnumerator, bool> update = null; update = (item) => { if (item is TaskBaseIEnumerator) { mRunningTask = item as TaskBaseIEnumerator; } if (item == null) { return(true); } if (!item.MoveNext()) { return(true); } if (item.Current == null) { return(false); } if (item.Current is IEnumerator) { needUpdates.Add(() => update(item.Current as IEnumerator)); } return(false); }; needUpdates.Add(() => update(enumerator)); }
/// <summary> /// /// </summary> /// <param name="oldUpdate"></param> /// <param name="subIEnumerator"></param> /// <returns>true 为结束了</returns> private bool NewEnumeratorSteps(Action oldUpdate, IEnumerator subIEnumerator) { var old = oldUpdate; if (subIEnumerator is TaskBaseIEnumerator) { mRunningTask = subIEnumerator as TaskBaseIEnumerator; //ZLog.Error("新的task IEnumerator ",mRunningTask.GetTaskName()); } else { //ZLog.Error("普通协程"+ curr.GetType().Name); } //mCurrUpdate = () => { // UpdateSub(old,curr); //}; var r = UpdateSubReturnIsEnd(old, subIEnumerator); if (!r) { mCurrUpdate = ( () => { UpdateSubReturnIsEnd(old, subIEnumerator); } ); } //mCurrUpdate(); return(r); }
private void CancelRunningTask() { if (mRunningTask != null) { mRunningTask.Cancel(); mRunningTask = null; } }
private void CancelRunningTask() { if (mRunningTask != null) { //ZLog.Info("CancelRunningTask IEnumerator ", mRunningTask.GetType().Name); mRunningTask.Cancel(); mRunningTask = null; } }