.NET SynchronizationContext - 它发送/发布到哪个线程?

时间:2009-08-14 10:11:44

标签: .net multithreading synchronizationcontext

我打算使用SynchronizationContext类来执行一些UI更新的跨线程编组。我的想法是避免必须引用主要表单(即Application.Run(form)中的那个),以便我可以说mainForm.BeginInvoke();

然而,文档中不清楚的一件事是,当你调用SynchronizationContext.Post()时,它会调用哪个线程来调用。它始终是主应用程序线程,还是首先初始化SynchronizationContext对象的线程,还是什么?

2 个答案:

答案 0 :(得分:2)

取决于SynchronizationContext的类型。当你扩展类时,你可以在你喜欢的任何线程上实现方法invokation(或多或少)。 windows形成一个将mashal回到主ui线程。 wpf将使用调度程序线程,依此类推。

答案 1 :(得分:0)

啊,CodeProject有一些有用的东西:

http://www.codeproject.com/KB/threads/SynchronizationContext.aspx

我会看一下。

更新:当主线程打开第一个表单时,它会被赋予一个SynchronizationContext对象。正是这个同步上下文的线程将发送和后置调用编组到。