What is the difference between Send Message and Post Message and how these relate to C# ,WPF and Pure windows programming?

C#WpfWinapi

C# Problem Overview


What is the difference between Send Message and Post Message ( in terms of pure windows programming) and how these relate to C# ,WPF and Pure windows programming?

I am new to Threading and all related stuff so please excuse me for obvious quesiton . I need to dig out the externals of Threading .. Please let me know the links that help me to build my concept from win32 programming to WPF.

I need to underderstand from Post message to Afx ( call to start a new thread ) to delegate Invok/Begin Invoke to Dispatcher.

C# Solutions


Solution 1 - C#

PostMessage (in "pure windows programming", aka win32 API) is asynchronous, i.e., to quote the docs:

> Places (posts) a message in the > message queue associated with the > thread that created the specified > window and returns without waiting for > the thread to process the message. > > To post a message in the message queue > associated with a thread, use the > PostThreadMessage function.

SendMessage is synchronous, that is, again quoting:

> Sends the specified message to a > window or windows. The SendMessage > function calls the window procedure > for the specified window and does not > return until the window procedure has > processed the message. > > To send a message and return > immediately, use the > SendMessageCallback or > SendNotifyMessage function. To post a > message to a thread's message queue > and return immediately, use the > PostMessage or PostThreadMessage > function.

A good tutorial on these two functions and their use is here.

The connection to WPF is discussed in this SO question.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser407269View Question on Stackoverflow
Solution 1 - C#Alex MartelliView Answer on Stackoverflow