Como concluir o TaskCompletionSource.Task usando TaskScheduler específico
Como fazer a conclusão deTaskCompletionSource.Task
acontecer em específicoTaskScheduler
quando eu ligoTaskCompletionSource.SetResult
?
Atualmente, estou usando a ideia que emprestei deesta postagem:
static public Task<TResult> ContinueOnTaskScheduler<TResult>(
this Task<TResult> @this, TaskScheduler scheduler)
{
return @this.ContinueWith(
antecedent => antecedent,
CancellationToken.None,
TaskContinuationOptions.ExecuteSynchronously,
scheduler).Unwrap();
}
Então, sempre que eu voltariaTaskCompletionSource.Task
para o chamador, agora voltoTaskCompletionSource.Task.ContinueOnTaskScheduler(scheduler)
em vez de.
É possível, de alguma forma, evitar esse outro nível de indireção deContinueWith
?