Пример #1
0
        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));
        }
Пример #2
0
        /// <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);
        }
Пример #3
0
 private void CancelRunningTask()
 {
     if (mRunningTask != null)
     {
         mRunningTask.Cancel();
         mRunningTask = null;
     }
 }
Пример #4
0
        private void CancelRunningTask()
        {
            if (mRunningTask != null)
            {
                //ZLog.Info("CancelRunningTask IEnumerator ", mRunningTask.GetType().Name);

                mRunningTask.Cancel();
                mRunningTask = null;
            }
        }