【问题标题】:.NET SynchronizationContext - Which thread does it Send/Post to?.NET SynchronizationContext - 它发送/发布到哪个线程?
【发布时间】:2009-08-14 10:11:43
【问题描述】:

我计划使用SynchronizationContext 类来执行一些跨线程的 UI 更新编组。这样做是为了避免必须引用主表单(即Application.Run(form) 中的那个),这样我就可以说mainForm.BeginInvoke();

但是,文档中不清楚的一件事是,当您调用 SynchronizationContext.Post() 时,它将调用编组到哪个线程。它始终是主应用程序线程,还是首先初始化SynchronizationContext 对象的线程,还是什么?

【问题讨论】:

    标签: .net multithreading synchronizationcontext


    【解决方案1】:

    取决于 SynchronizationContext 的类型。当您扩展类时,您可以在您喜欢的任何线程(或多或少)上实现方法调用。 Windows 窗体将混搭回主 ui 线程。 wpf 将使用调度程序线程等。

    【讨论】:

      【解决方案2】:

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

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

      我去看看。

      更新:事实证明,当在主线程上打开第一个表单时,主线程被赋予了一个 SynchronizationContext 对象。发送和发送调用被编组到的正是这个同步上下文的线程。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-19
        • 2013-11-17
        • 2022-01-23
        • 1970-01-01
        相关资源
        最近更新 更多