.net SynchronizationContext.Post的处理顺序

.net SynchronizationContext.Post的处理顺序,.net,multithreading,.net,Multithreading,我使用SynchronizationContext从UI线程上的后台线程调用方法。我读了一篇文章,要求区别Send和Post。我理解答案,只要我需要调用方法的结果继续,我就会调用Send,只要我不在乎结果,我就会调用Post 我的问题是:我可以对调用Posted委托的顺序做出任何假设吗?例如,我会Post可以在UI线程的日志窗口中显示的消息。但是,如果Posted委托没有按照调用顺序得到处理,消息日志也会显示不符合顺序的消息 我可以通过发送消息来解决这个问题,但我真的需要担心吗?您可以根据您使用

我使用
SynchronizationContext
从UI线程上的后台线程调用方法。我读了一篇文章,要求区别
Send
Post
。我理解答案,只要我需要调用方法的结果继续,我就会调用
Send
,只要我不在乎结果,我就会调用
Post

我的问题是:我可以对调用
Post
ed委托的顺序做出任何假设吗?
例如,我会
Post
可以在UI线程的日志窗口中显示的消息。但是,如果
Post
ed委托没有按照调用顺序得到处理,消息日志也会显示不符合顺序的消息


我可以通过
发送
消息来解决这个问题,但我真的需要担心吗?

您可以根据您使用的应用程序型号来确定,这将通知您选择的
同步上下文。不同的实现具有不同的行为,如中的表(图4)所示


因此,基于桌面用户界面的
SynchronizationContext
实现将保证委托的有序执行,而对于其他人来说则不保证。

对您来说是一本不错的读物。您使用的是WinForms还是WPF?我认为这是您正在使用的
SynchronizationContext
的特定实现。谢谢@YuvalItzchakov。这篇文章解释得很好。顺便说一下,我使用WinForms。这篇文章描述了一种情况,即消息出现故障(发布发送命令时)。至少在我的代码中,我会阻止这种情况。但我不能对per Post调用方法做任何假设。也许这是糟糕的API设计,但我不觉得有责任。到目前为止,我认为我的问题已经解决了。再次感谢。