我打算使用SynchronizationContext类来执行一些UI更新的跨线程编组。我的想法是避免必须引用主要表单(即Application.Run(form)
中的那个),以便我可以说mainForm.BeginInvoke();
然而,文档中不清楚的一件事是,当你调用SynchronizationContext.Post()
时,它会调用哪个线程来调用。它始终是主应用程序线程,还是首先初始化SynchronizationContext
对象的线程,还是什么?
答案 0 :(得分:2)
取决于SynchronizationContext的类型。当你扩展类时,你可以在你喜欢的任何线程上实现方法invokation(或多或少)。 windows形成一个将mashal回到主ui线程。 wpf将使用调度程序线程,依此类推。
答案 1 :(得分:0)
啊,CodeProject有一些有用的东西:
http://www.codeproject.com/KB/threads/SynchronizationContext.aspx
我会看一下。
更新:当主线程打开第一个表单时,它会被赋予一个SynchronizationContext
对象。正是这个同步上下文的线程将发送和后置调用编组到。