Exemple #1
0
 /// <summary>
 /// Implements <c>ConfigureAwait(bool)</c> for <see cref="Task.Yield"/>. The resulting behavior in asynchronous code
 /// is the same as one would expect for <see cref="Task.ConfigureAwait(bool)"/>.
 /// </summary>
 /// <param name="awaitable">The awaitable provided by <see cref="Task.Yield"/>.</param>
 /// <param name="continueOnCapturedContext"><inheritdoc cref="Task.ConfigureAwait(bool)"/></param>
 /// <returns>An object used to await this yield.</returns>
 public static ConfiguredYieldAwaitable ConfigureAwait(
     this YieldAwaitable awaitable,
     bool continueOnCapturedContext
     )
 {
     return(new ConfiguredYieldAwaitable(awaitable, continueOnCapturedContext));
 }
Exemple #2
0
        public MyAwaiter(YieldAwaitable awaitable)
        {
            var awaiter = awaitable.GetAwaiter();

            _onCompleted       = awaiter.OnCompleted;
            _unsafeOnCompleted = awaiter.UnsafeOnCompleted;
            _getResult         = awaiter.GetResult;
            _isCompleted       = () => awaiter.IsCompleted;
        }
 public static YieldAwaitableThreadPool ConfigureAwait(this YieldAwaitable _, bool LockContext)
 {
     return(new YieldAwaitableThreadPool());
 }
Exemple #4
0
 public ConfiguredYieldAwaitable(YieldAwaitable awaitable, bool continueOnCapturedContext)
 {
     _awaitable = awaitable;
     _continueOnCapturedContext = continueOnCapturedContext;
 }
 /// <summary>Продолжить в пуле потоков</summary>
 /// <param name="LockContext">Если истина, то продолжение будет выполнено в том же потоке, если ложь - то в пуле потоков</param>
 public static YieldAwaitableThreadPool ConfigureAwait(this YieldAwaitable _, bool LockContext) => new(LockContext);
Exemple #6
0
 /// <summary>
 /// Converts a <see cref="YieldAwaitable"/> to a <see cref="ConfiguredTaskYieldAwaitable"/>.
 /// </summary>
 /// <param name="yieldAwaitable">The result of <see cref="Task.Yield()"/>.</param>
 /// <param name="continueOnCapturedContext">A value indicating whether the continuation should run on the captured <see cref="SynchronizationContext"/>, if any.</param>
 /// <returns>An awaitable.</returns>
 public static ConfiguredTaskYieldAwaitable ConfigureAwait(this YieldAwaitable yieldAwaitable, bool continueOnCapturedContext)
 => new ConfiguredTaskYieldAwaitable(continueOnCapturedContext);