私はSynchronizationContext
クラスについて学んでいます。私は、WinForm/WPFアプリケーションのコンテキストでSynchronizationContext.SetSynchronizationContext()
を呼び出すための一般的な使用シナリオを理解しようとしています。スレッドのSynchronizationContext
を設定することは何を意味しますか?いつ私はそれを行う必要がありますか、なぜですか?また、私はそれを設定する場合、私はそれをいくつかの時点で解除する必要がありますか?UIアプリケーションでSynchronizationContext.SetSynchronizationContext()を呼び出すタイミングは?
編集:私はSetSynchronizationContext()
を考えた理由を彼の答えで
、@Hansアンパッサンは尋ねました。私が持っているアイデアは、ワーカースレッド上でコンテキストを設定して、そのスレッド上で実行されているコードが使用するコンテキストを持つようにすることです。
private void button3_Click(object sender, EventArgs e)
{
var syncContext = SynchronizationContext.Current;
Task.Factory.StartNew(() =>
{
// Setup the SynchronizationContext on this thread so
// that SomeAsyncComponentThatNeedsACurrentContext
// will have a context when it needs one
if (SynchronizationContext.Current == null)
SynchronizationContext.SetSynchronizationContext(syncContext);
var c = new SomeAsyncComponentThatNeedsACurrentContext();
c.DoSomething();
});
}
私の質問への更新をご覧ください。 – Sylvain
私の更新プログラムはあなたの答えを変えますか?そのようなワーカースレッド上のSynchronizationContextの設定も避けなければならないと思いますか? – Sylvain
私は本当にあなたがこれについて考えていることを聞きたいと思います...ありがとう – Sylvain