So vervollständigen Sie TaskCompletionSource.Task mithilfe eines bestimmten TaskSchedulers

Wie mache ich die Vervollständigung vonTaskCompletionSource.Task passieren auf bestimmteTaskScheduler, wenn ich anrufeTaskCompletionSource.SetResult?

Momentan verwende ich die Idee, die ich ausgeliehen habedieser Beitrag:

static public Task<TResult> ContinueOnTaskScheduler<TResult>(
    this Task<TResult> @this, TaskScheduler scheduler)
{
    return @this.ContinueWith(
        antecedent => antecedent,
        CancellationToken.None,
        TaskContinuationOptions.ExecuteSynchronously,
        scheduler).Unwrap();
}

Also, wann immer ich wiederkommen würdeTaskCompletionSource.Task zum anrufer kehre ich jetzt zurückTaskCompletionSource.Task.ContinueOnTaskScheduler(scheduler) stattdessen.

Ist es möglich, dies irgendwie zu vermeiden, eine andere Ebene der Indirektion vonContinueWith?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage