c# - 已发布回调的 WindowsFormsSynchronizationContext 执行顺序
问题描述
我用来WindowsFormsSynchronizationContext
在主 UI 线程(应用程序是 WinForms)中调度回调的执行。调度回调代码在工作线程中运行,它不应该与回调同步,所以我使用WindowsFormsSynchronizationContext.Post()
方法。但是回调必须在主 UI 线程中执行,以便将它们发布到WindowsFormsSynchronizationContext
.
有人知道是否WindowsFormsSynchronizationContext
按发布顺序执行发布的回调吗?我没有在Microsoft Docs中找到此信息。
解决方案
是的,订单被保留。
WindowsFormSynchronizationContext.Post
呼叫Control.BeginInvoke
哪个呼叫MarshaledInvoke
哪个呼叫PostMessage
。
发布到窗口的消息之间的顺序被保留(但发送的消息优先于发布的消息)。
推荐阅读
- javascript - 渲染方法中的三元运算符
- python - python使用正则表达式根据前一行读取接下来的n行
- r - 用于配对 Wilcoxon 检验的带有 p 值的动画小提琴/箱线图
- flutter - 在 SingleChildScrollView 内垂直居中小部件
- c# - 多态代码优先模型和查询
- r - 忽略 Inf 值并运行 lm 回归
- javascript - 输入字段,使用 jQuery 自动完成,输入时有时会失去焦点(仅在 IE 11 上发生)
- python - PyQt:将用户输入添加到列表中
- twitter - Twitter javascript文件的非缩小版?(例如widgets.js)
- sass - Jekyll 不刷新对自定义 CSS 子目录的更改