public TResult Call <TResult>(RecursiveCallResult <TResult> result) { if (_context != RecursiveCallContext.Context) { throw new InvalidOperationException("context mismatch"); } result.IsOwnerOfCtx = true; if (result.IsCompleted) { return(result.GetAwaiter().GetResult()); } foreach (var action in _context.WillDoAction.GetConsumingEnumerable()) { action(); } return(result.GetAwaiter().GetResult()); }
internal RecursiveCallResult(RecursiveCallResult <VoidStruct> @base) { Base = @base; }
public void Call(RecursiveCallResult result) { Call(result.Base); }
// ReSharper disable once UnusedParameter.Local private RecursiveCallResultBuilder(int _) { Task = new RecursiveCallResult <TResult>(); }
internal RecursiveCallResultAwaiter(RecursiveCallResult <TResult> result) { _result = result; }