public void AwaitUnsafeOnCompleted<TAwaiter, TStateMachine>(ref TAwaiter awaiter, ref TStateMachine stateMachine) where TAwaiter : ICriticalNotifyCompletion where TStateMachine : IAsyncStateMachine { if (moveNext == null) { var runner = new MoveNextRunner<TStateMachine>(); moveNext = runner.Run; runner.StateMachine = stateMachine; // set after create delegate. } awaiter.UnsafeOnCompleted(moveNext); }
public void AwaitOnCompleted<TAwaiter, TStateMachine>(ref TAwaiter awaiter, ref TStateMachine stateMachine) where TAwaiter : INotifyCompletion where TStateMachine : IAsyncStateMachine { if (moveNext == null) { if (promise == null) { promise = new UniTaskCompletionSource(); // built future. } var runner = new MoveNextRunner<TStateMachine>(); moveNext = runner.Run; runner.StateMachine = stateMachine; // set after create delegate. } awaiter.OnCompleted(moveNext); }
public void AwaitUnsafeOnCompleted <TAwaiter, TStateMachine>(ref TAwaiter awaiter, ref TStateMachine stateMachine) where TAwaiter : ICriticalNotifyCompletion where TStateMachine : IAsyncStateMachine { if (moveNext == null) { var runner = new MoveNextRunner(); moveNext = runner.Run; var boxed = (IAsyncStateMachine)stateMachine; runner.StateMachine = boxed; // boxed } awaiter.UnsafeOnCompleted(moveNext); }
public void AwaitOnCompleted <TAwaiter, TStateMachine>(ref TAwaiter awaiter, ref TStateMachine stateMachine) where TAwaiter : INotifyCompletion where TStateMachine : IAsyncStateMachine { if (moveNext == null) { if (promise == null) { promise = new UniTaskCompletionSource <AsyncUnit>(); // built future. } var runner = new MoveNextRunner(); moveNext = runner.Run; var boxed = (IAsyncStateMachine)stateMachine; runner.StateMachine = boxed; // boxed } awaiter.OnCompleted(moveNext); }