我计划使用SynchronizationContext类来执行 UI 更新的一些跨线程编组。这个想法是为了避免必须引用主要形式(即 in Application.Run(form)
),所以我可以说mainForm.BeginInvoke();
但是,文档中不清楚的一件事是,当您调用 时SynchronizationContext.Post()
,它会将调用编组到哪个线程。它总是主应用程序线程,还是首先初始化SynchronizationContext
对象的线程,还是什么?
我计划使用SynchronizationContext类来执行 UI 更新的一些跨线程编组。这个想法是为了避免必须引用主要形式(即 in Application.Run(form)
),所以我可以说mainForm.BeginInvoke();
但是,文档中不清楚的一件事是,当您调用 时SynchronizationContext.Post()
,它会将调用编组到哪个线程。它总是主应用程序线程,还是首先初始化SynchronizationContext
对象的线程,还是什么?
取决于 SynchronizationContext 的类型。当您扩展类时,您可以在您喜欢的任何线程(或多或少)上实现方法调用。Windows 窗体将混搭回主 ui 线程。wpf 将使用调度程序线程等。
啊,CodeProject 有一些有用的东西:
http://www.codeproject.com/KB/threads/SynchronizationContext.aspx
我会看看那个。
更新:事实证明,SynchronizationContext
当在其上打开第一个表单时,主线程被赋予了一个对象。发送和发送调用被编组到的正是这个同步上下文的线程。