Exemple #1
0
            static Task MyLoopAsyncStateMachineInnerProc(MyLoopAsyncStateMachine myLoopAsyncStateMachine)
            {
                MyLoopAsyncStateMachineInner MyLoopAsyncStateMachineInner = new MyLoopAsyncStateMachineInner
                {
                    _myLoopAsyncStateMachine = myLoopAsyncStateMachine,
                };

                MyLoopAsyncStateMachineInner._builder.Start(ref MyLoopAsyncStateMachineInner);
                return(MyLoopAsyncStateMachineInner._builder.Task);
            }
Exemple #2
0
                void IAsyncStateMachine.MoveNext()
                {
                    //Console.WriteLine($">>>{sum}<<<");
                    //sum += await MyBarAsync((ii % 5) + 1);

                    //Console.WriteLine($"<<<{sum}>>>");
                    //++ii;

                    try
                    {
                        switch (_state)
                        {
                        case -1:
                        {
                            _slef = this;
                            Console.WriteLine($">>>{_myLoopAsyncStateMachine._sum}<<<");
                            _awaiter = MyBarAsync((_myLoopAsyncStateMachine._ii % 5) + 1).GetAwaiter();
                            if (_awaiter.IsCompleted)
                            {
                                goto case 0;
                            }
                            else
                            {
                                _state = 0;
                                _builder.AwaitUnsafeOnCompleted(ref _awaiter, ref _slef);
                            }
                        }
                        break;

                        case 0:
                        {
                            _myLoopAsyncStateMachine._sum += _awaiter.GetResult();
                            Console.WriteLine($"<<<{_myLoopAsyncStateMachine._sum}>>>");
                            ++_myLoopAsyncStateMachine._ii;
                            _builder.SetResult();
                        }
                        break;
                        }
                    }
                    catch (Exception ex)
                    {
                        _builder.SetException(ex);
                    }
                }