static Task MyLoopAsyncStateMachineInnerProc(MyLoopAsyncStateMachine myLoopAsyncStateMachine) { MyLoopAsyncStateMachineInner MyLoopAsyncStateMachineInner = new MyLoopAsyncStateMachineInner { _myLoopAsyncStateMachine = myLoopAsyncStateMachine, }; MyLoopAsyncStateMachineInner._builder.Start(ref MyLoopAsyncStateMachineInner); return(MyLoopAsyncStateMachineInner._builder.Task); }
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); } }