Когда вызывать SynchronizationContext.SetSynchronizationContext () в приложении пользовательского интерфейса?

Я изучаю класс 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();

    });
}
9
задан Adi Lester 7 August 2012 в 16:11
поделиться