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