В чем разница между Send Message и Post Message и как они связаны с программированием на C #, WPF и Pure Windows? - PullRequest
69 голосов
/ 31 июля 2010

В чем разница между отправкой сообщения и отправкой сообщения (с точки зрения программирования на чистых окнах) и как они связаны с программированием на языках C #, WPF и Pure?

Я новичок в Threading и во всем, что с этим связано, поэтому, пожалуйста, извините за очевидный вопрос. Мне нужно разобраться с внешними потоками. Пожалуйста, дайте мне знать ссылки, которые помогут мне построить мою концепцию от программирования на win32 до WPF.

Мне нужно понять из сообщения Post сообщение в Afx (позвонить, чтобы начать новую тему), чтобы делегировать Invok / Begin Invoke в Dispatcher.

1 Ответ

88 голосов
/ 31 июля 2010

PostMessage (в «чистом программировании Windows», также называемом Win32 API) - асинхронный , т. Е. Для цитирования документов:

Помещает (отправляет) сообщение вочередь сообщений, связанная с потоком, который создал указанное окно и возвращает его, не дожидаясь, пока поток обработает сообщение.

Чтобы отправить сообщение в очередь сообщений, связанную с потоком, используйте функцию PostThreadMessage.

SendMessage - это синхронный , то есть снова цитирование:

Отправляет указанное сообщение окну или окнам.Функция SendMessage вызывает оконную процедуру для указанного окна и не возвращается, пока оконная процедура не обработает сообщение.

Чтобы отправить сообщение и немедленно вернуться, используйте функцию SendMessageCallback или SendNotifyMessage.Чтобы отправить сообщение в очередь сообщений потока и сразу же вернуться, используйте функцию PostMessage или PostThreadMessage.

Хорошее руководство по этим двум функциям и их использованию: здесь .

Связь с WPF обсуждается в этом вопросе SO .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...