我正在学习这门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();
});
}
Run Code Online (Sandbox Code Playgroud)