首页 > 解决方案 > 已发布回调的 WindowsFormsSynchronizationContext 执行顺序

问题描述

我用来WindowsFormsSynchronizationContext在主 UI 线程(应用程序是 WinForms)中调度回调的执行。调度回调代码在工作线程中运行,它不应该与回调同步,所以我使用WindowsFormsSynchronizationContext.Post()方法。但是回调必须在主 UI 线程中执行,以便将它们发布到WindowsFormsSynchronizationContext.

有人知道是否WindowsFormsSynchronizationContext按发布顺序执行发布的回调吗?我没有在Microsoft Docs中找到此信息。

标签: c#winformssynchronization

解决方案


是的,订单被保留。

WindowsFormSynchronizationContext.Post呼叫Control.BeginInvoke哪个呼叫MarshaledInvoke哪个呼叫PostMessage

发布到窗口的消息之间的顺序被保留(但发送的消息优先于发布的消息)。


推荐阅读