我正在学习这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();
});
}