Пример #1
0
        public static Routine <T> GetAwaiter <T>(this IResumer <T> resumer)
        {
            var _resumer       = resumer as Resumer <T>;
            var resumerRoutine = Routine.Get <Routine <T> >(true);

            resumerRoutine.Trace(1);
            _resumer.routine = resumerRoutine;
            _resumer.id      = resumerRoutine.Id;
            if (_resumer.WasResumed)
            {
                resumerRoutine.SetResult(_resumer.result);
                _resumer.Reset();
            }
            return(resumerRoutine);
        }
Пример #2
0
        public static Routine GetAwaiter(this IResumer resumer)
        {
            var _resumer = resumer as Resumer;

            Assert.IsNotNull(_resumer);
            var resumerRoutine = Routine.Get <Routine>(true);

            resumerRoutine.Trace(1);
            _resumer.routine = resumerRoutine;
            _resumer.id      = resumerRoutine.Id;
            if (_resumer.WasResumed)
            {
                resumerRoutine.SetResult();
                _resumer.Reset();
            }
            return(resumerRoutine);
        }
Пример #3
0
        public static CTask <T> GetAwaiter <T>(this IResumer <T> resumer)
        {
            var _resumer = resumer as Resumer <T>;

            Assert.IsNotNull(_resumer);
            var resumerRoutine = CTask.Get <CTask <T> >(true);

            resumerRoutine.Trace(1);
            _resumer.routine = resumerRoutine;
            _resumer.id      = resumerRoutine.Id;
            if (_resumer.WasResumed)
            {
                resumerRoutine.SetResult(_resumer.result);
                _resumer.Reset();
            }
            return(resumerRoutine);
        }
Пример #4
0
 public override void Run(IResumer resumer)
 {
     resumer.Resume();
 }
Пример #5
0
 public override void Reset()
 {
     resumer = null;
 }
Пример #6
0
 public void Throw(System.Exception error)
 {
     Assert.IsNotNull(resumer);
     resumer.Throw(error);
     resumer = null;
 }
Пример #7
0
 public void Resume(object result = null)
 {
     Assert.IsNotNull(resumer);
     resumer.Resume(result);
     resumer = null;
 }
Пример #8
0
 public override void Run(IResumer resumer)
 {
     Assert.IsNull(this.resumer);
     this.resumer = resumer;
 }
Пример #9
0
 public abstract void Run(IResumer resumer);
Пример #10
0
 /// <summary> Release a resumer to the pool. </summary>
 public static void ReleaseResumer <T>(IResumer <T> resumer)
 {
     (resumer as Resumer <T>).Reset();
     resumerPool.Release(resumer);
 }
Пример #11
0
 public override void Run(IResumer resumer)
 {
     newResumers.Add(resumer);
 }
Пример #12
0
 /// <summary>
 /// Routine that yields until a resumer is resumed.
 /// Useful for using resumers in WaitForAll/WaitForAny.
 /// </summary>
 public static async CTask <T> WaitForResumer <T>(IResumer <T> resumer)
 {
     return(await resumer);
 }
Пример #13
0
 /// <summary>
 /// Routine that yields until a resumer is resumed.
 /// Useful for using resumers in WaitForAll/WaitForAny.
 /// </summary>
 public static async CTask WaitForResumer(IResumer resumer)
 {
     await resumer;
 }
Пример #14
0
 /// <summary> Release a resumer to the pool. </summary>
 public static void ReleaseResumer(IResumer resumer)
 {
     resumer.Reset();
     resumerPool.Release(resumer);
 }
Пример #15
0
 /// <summary>
 /// Routine that yields until a resumer is resumed.
 /// Useful for using resumers in WaitForAll/WaitForAny.
 /// </summary>
 public static async Routine <T> WaitForResumer <T>(IResumer <T> resumer)
 {
     return(await resumer);
 }
Пример #16
0
 /// <summary>
 /// Routine that yields until a resumer is resumed.
 /// Useful for using resumers in WaitForAll/WaitForAny.
 /// </summary>
 public static async Routine WaitForResumer(IResumer resumer)
 {
     await resumer;
 }