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