私はまだタスクの概念全体と TPL を学んでいます。私の現在の理解では、SynchronizationContext 関数 (存在する場合) はawait、Task を「どこかに」ディスパッチするために使用されます。一方、Taskクラス内の関数はコンテキストを使用しませんよね?
たとえばTask.Run(...)、常にスレッド プールのワーカー スレッドでアクションをディスパッチし、SynchronizationContext.Current完全に無視します。await Foobar()コンテキストを使用して、await?の後に生成されたタスクを実行します。
Taskそれが本当なら、私の質問は次のとおりです。実際にアクションを実行するが、を使用してディスパッチされるを取得するにはどうすればよいSynchronizationContext.Current.Send/Postですか?
SynchronizationContextそして、特にフレームワークの残りの部分でいつ、どのように使用されるかについて、誰でも良い導入を推奨できますか? MSDNはこのクラスについて非常に静かなようです。Google の上位ヒット (こことここ) は、Windows フォームのディスパッチのみに合わせて調整されているようです。Stephen Cleary は、どのコンテキストが既に存在し、どのように機能するかを学ぶのに役立つ記事を書きましたが、実際にいつどこで使用されるかについては理解していません。