先月私はTaskEx.Yield
の私の学習の結果、次の質問を:TaskEx.Yield(TaskScheduler)
Can async methods have expensive code before the first 'await'?
しかし、私は以来、このメソッドは、実際に周囲に後続のすべてのコードを提出することを実現していますTaskScheduler
。真のDI精神では、私たちのチームは可能な限り周囲のインスタンスを使用することを避けることに同意しています。したがって、TaskScheduler
を明示的に指定できるかどうかを知りたいですか?次のような
何かが素晴らしいことだ:
public static YieldAwaitable Yield(TaskScheduler taskScheduler)
{
return new YieldAwaitable(taskScheduler);
}
しかし、非同期CTPの現在の実装では、唯一提供しています:
public static YieldAwaitable Yield()
{
return new YieldAwaitable(SynchronizationContext.Current ?? TaskScheduler.Current);
}
を以下に許容できる効率的な代替手段を提供しますか?
真DIの精神でawait Task.Factory.StartNew(() => { }, CancellationToken.None, TaskCreationOptions.None, this.TaskScheduler);
私はあなたの懸念を理解していますが、大抵の場合、周囲の 'TaskScheduler'をうまく使っていると思います。 – svick