SynchronizationContext
awaitした時点の実行コンテキストを表す.NETのクラス。捕捉されると、非同期処理完了後の継続がそのコンテキストへ投げ返される(例: WPF/WinFormsのUIスレッド)。
- 概念URI
https://comcomponent.com/knowledge/synchronizationcontext/
- 最終確認日
- 2026-08-01
- 機械可読データ
- JSON-LD
この概念が関わる関係
- UIスレッドのコンテキストはSynchronizationContextを利用します。UIスレッドの文脈は、継続をUIスレッドへ戻すための仕組みであるSynchronizationContextとして表される。ConfigureAwait(false)は、awaitが捕捉したこのSynchronizationContextやTaskSchedulerへ継続を戻さないことを指示する記法である / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- 非同期I/OはSynchronizationContextを利用します。UIスレッドでawaitした非同期I/Oでは、継続の実行先としてその時点のSynchronizationContextが捕捉される / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- WPFはSynchronizationContextを利用します。WPFのUIスレッドにはDispatcherSynchronizationContextが設定されており、SynchronizationContext.Currentとして取得できる。 / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- Windows FormsはSynchronizationContextを利用します。WinFormsのUIスレッドにはWindowsFormsSynchronizationContextが設定されている。 / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- plain awaitはSynchronizationContextを利用します。既定のawait(ConfigureAwaitなし)は、その時点のSynchronizationContext.Currentをまず捕まえ継続をそこへ戻そうとする。それがnullのときだけTaskScheduler.Currentを見て、TaskScheduler.Defaultでなければそのスケジューラへ、どちらでもなければ継続はThreadPool上で走る。 / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- ConfigureAwait(false)はSynchronizationContextを前提とします。そのawaitがSynchronizationContext(またはデフォルト以外のTaskScheduler)を捕捉していた場合に限り、ConfigureAwait(false)はそこへ継続を戻すことを強制しないという意味を持つ。コンソールアプリやThreadPool上で動くライブラリコードのようにそもそもコンテキストが無い状況でも問題なく使え、その場合はplain awaitとの差がほとんど無い。 / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
この概念を扱う記事
一次資料
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。