在纯Windows编程方面,“发送消息”和“发布消息”之间有何区别?它们与C#,WPF和纯Windows编程有何关系?
我是Threading和其他所有相关知识的新手,所以请原谅我明显的疑问。我需要挖掘Threading的外部因素。.请让我知道帮助我从Win32编程到WPF构筑概念的链接。
我需要理解从Post消息到Afx(调用以启动一个新线程)将Invok / Begin Invoke委托给Dispatcher的过程。
Answers:
PostMessage
(在“纯Windows编程”中,也称为win32 API)是异步的,即引用文档:
将消息放置(张贴)在与创建指定窗口的线程关联的消息队列中,并返回消息,而无需等待线程处理消息。
要将消息发布到与线程关联的消息队列中,请使用PostThreadMessage函数。
SendMessage
是sync,即再次引用:
将指定的消息发送到一个或多个窗口。SendMessage函数调用指定窗口的窗口过程,直到该窗口过程处理完该消息后才返回。
要发送消息并立即返回,请使用SendMessageCallback或SendNotifyMessage函数。要将消息发布到线程的消息队列中并立即返回,请使用PostMessage或PostThreadMessage函数。
关于这两个函数及其用法的一个很好的教程在这里。
在这个SO问题中讨论了与WPF的连接。