Пример #1
0
        public static Task <int> MyFooAsync(int p0, int p1, int p2)
        {
            MyFooAsyncStateMachine myFooAsyncStateMachine = new MyFooAsyncStateMachine
            {
                _p0 = p0,
                _p1 = p1,
                _p2 = p2,
            };

            myFooAsyncStateMachine._builder.Start(ref myFooAsyncStateMachine);
            return(myFooAsyncStateMachine._builder.Task);
        }
Пример #2
0
            void IAsyncStateMachine.MoveNext()
            {
                //throw new NotImplementedException();

                try
                {
                    switch (_state)
                    {
                    case -1:
                    {
                        _self = this;
                        //int s0 = Bar(p0);
                        //int a0 = await MyBarAsync(p0);

                        _s0      = Bar(_p0);
                        _awaiter = MyBarAsync(_p0).GetAwaiter();
                        if (_awaiter.IsCompleted)
                        {
                            goto case 0;
                        }
                        else
                        {
                            _state = 0;
                            _builder.AwaitUnsafeOnCompleted(ref _awaiter, ref _self);
                        }
                    }
                    break;

                    case 0:
                    {
                        _a0 = _awaiter.GetResult();
                        //int s1 = Bar(p1);
                        //int a1 = await MyBarAsync(p1);
                        _s1      = Bar(_p1);
                        _awaiter = MyBarAsync(_p1).GetAwaiter();
                        if (_awaiter.IsCompleted)
                        {
                            goto case 1;
                        }
                        else
                        {
                            _state = 1;
                            _builder.AwaitUnsafeOnCompleted(ref _awaiter, ref _self);
                        }
                    }
                    break;

                    case 1:
                    {
                        _a1 = _awaiter.GetResult();
                        //int s2 = Bar(p2);
                        //int a2 = await MyBarAsync(p2);
                        _s2      = Bar(_p2);
                        _awaiter = MyBarAsync(_p2).GetAwaiter();
                        if (_awaiter.IsCompleted)
                        {
                            goto case 2;
                        }
                        else
                        {
                            _state = 2;
                            _builder.AwaitUnsafeOnCompleted(ref _awaiter, ref _self);
                        }
                    }
                    break;

                    case 2:
                    {
                        _a2 = _awaiter.GetResult();
                        int result = _s0 + _a0 + _s1 + _a1 + _s2 + _a2;
                        _builder.SetResult(result);
                    }
                    break;
                    }
                }
                catch (Exception ex)
                {
                    _builder.SetException(ex);
                }
            }