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