私はSynchronizationContext
クラスについて学んでいます。SynchronizationContext.SetSynchronizationContext()
WinForm/WPFアプリケーションのコンテキストで呼び出すための一般的な使用シナリオを理解しようとしています。SynchronizationContext
スレッドのを設定するとはどういう意味ですか?いつ、なぜそれをすべきですか?また、設定した場合、いつか設定を解除する必要がありますか?
編集:
彼の答えの中で、@ Hans Passantは、なぜ私が考えているのかと尋ねましたSetSynchronizationContext()
。私が持っているアイデアは、ワーカースレッドにコンテキストを設定して、そのスレッドで実行されているコードが使用するコンテキストを持つようにすることです。
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();
});
}