Exemplo n.º 1
0
            static Task MyLoopAsyncStateMachineInnerProc(MyLoopAsyncStateMachine myLoopAsyncStateMachine)
            {
                MyLoopAsyncStateMachineInner MyLoopAsyncStateMachineInner = new MyLoopAsyncStateMachineInner
                {
                    _myLoopAsyncStateMachine = myLoopAsyncStateMachine,
                };

                MyLoopAsyncStateMachineInner._builder.Start(ref MyLoopAsyncStateMachineInner);
                return(MyLoopAsyncStateMachineInner._builder.Task);
            }
Exemplo n.º 2
0
        public static Task <int> MyLoopAsync(int loop)
        {
            MyLoopAsyncStateMachine MyLoopAsyncStateMachine = new MyLoopAsyncStateMachine
            {
                _loop = loop,
            };

            MyLoopAsyncStateMachine._builder.Start(ref MyLoopAsyncStateMachine);
            return(MyLoopAsyncStateMachine._builder.Task);
        }
Exemplo n.º 3
0
            void IAsyncStateMachine.MoveNext()
            {
                try
                {
                    switch (_state)
                    {
                    case -1:
                    {
                        _slef    = this;
                        _awaiter = MyLoopAsyncStateMachineInnerProc(this).GetAwaiter();
                        if (_awaiter.IsCompleted)
                        {
                            goto case 0;
                        }
                        else
                        {
                            _state = 0;
                            _builder.AwaitOnCompleted(ref _awaiter, ref _slef);
                        }
                    }
                    break;

                    case 0:
                    {
                        if (_ii < _loop)
                        {
                            _state = -1;
                            _builder.AwaitOnCompleted(ref _awaiter, ref _slef);
                        }
                        else
                        {
                            _builder.SetResult(_sum);
                        }
                    }
                    break;
                    }
                }
                catch (Exception ex)
                {
                    _builder.SetException(ex);
                }
            }