コード例 #1
0
 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());
 }
コード例 #2
0
 internal RecursiveCallResult(RecursiveCallResult <VoidStruct> @base)
 {
     Base = @base;
 }
コード例 #3
0
 public void Call(RecursiveCallResult result)
 {
     Call(result.Base);
 }
コード例 #4
0
 // ReSharper disable once UnusedParameter.Local
 private RecursiveCallResultBuilder(int _)
 {
     Task = new RecursiveCallResult <TResult>();
 }
コード例 #5
0
 internal RecursiveCallResultAwaiter(RecursiveCallResult <TResult> result)
 {
     _result = result;
 }