【发布时间】:2015-12-18 06:19:40
【问题描述】:
我使用SynchronizationContext 从 UI 线程上的后台线程调用方法。我读了this post,它询问Send 和Post 的区别。我理解答案,只要我需要调用方法的结果继续进行,我就会打电话给Send,只要我不关心结果,我就会打电话给Post。
我的问题是:我可以对调用Posted 代表的顺序做出任何假设吗?例如,我会在日志窗口中显示Post 消息用户界面线程。但是,如果Posted 委托没有按照它们被调用的顺序进行处理,那么消息日志也会乱序显示消息。
我可以通过Send发送消息来解决这个问题,但我真的需要担心吗?
【问题讨论】:
-
This 对你来说是一本好书。您使用的是 WinForms 还是 WPF?我认为这将是特定于您正在使用的
SynchronizationContext的实现。 -
谢谢@YuvalItzchakov。这篇文章解释得很好。顺便说一句,我使用 WinForms。这篇文章描述了消息乱序的情况(发布发送命令时)。至少在我的代码中,我会阻止这种情况。但是我不能对每个 Post 调用的方法的作用做出任何假设。也许这是糟糕的 API 设计,但我对此不负责任。到目前为止,我认为我的问题已解决。再次感谢。
标签: .net multithreading