2010-07-31 13 views
57

Sự khác nhau giữa Gửi tin nhắn và Đăng thông báo (về mặt lập trình cửa sổ thuần túy) là gì và chúng liên quan đến lập trình C#, WPF và Pure windows như thế nào?Sự khác nhau giữa Gửi tin nhắn và Đăng tin nhắn là gì và chúng liên quan đến lập trình C#, WPF và cửa sổ Pure như thế nào?

Tôi mới sử dụng Luồng và tất cả các nội dung có liên quan, vì vậy xin vui lòng giải thích cho tôi về quesiton rõ ràng. Tôi cần phải khai thác các phần bên ngoài của luồng .. Xin vui lòng cho tôi biết các liên kết giúp tôi xây dựng ý tưởng của mình từ lập trình win32 sang WPF.

Tôi cần phải underderstand từ bài viết đến Afx (gọi để bắt đầu một chủ đề mới) để đại biểu Invok/Begin Invoke đến Dispatcher.

Trả lời

75

PostMessage (trong "cửa sổ tinh khiết lập trình", hay còn gọi là API win32) là asynchronous, ví dụ, để trích dẫn các tài liệu:

Places (bài viết) một thông điệp trong hàng đợi nhắn liên quan đến các chủ đề rằng đã tạo cửa sổ được chỉ định và trả về mà không cần chờ đợi luồng để xử lý thư.

Để đăng thư trong hàng đợi thư được liên kết với một chuỗi, hãy sử dụng hàm PostThreadMessage.

SendMessagesynchronous, có nghĩa là, một lần nữa trích dẫn:

Gửi thông điệp cụ thể đến một cửa sổ hoặc cửa sổ. Hàm SendMessage gọi thủ tục cửa sổ cho cửa sổ được chỉ định và không trả lại cho đến khi quy trình cửa sổ có xử lý thư.

Để gửi tin nhắn và trả lại ngay lập tức, hãy sử dụng chức năng SendMessageCallback hoặc SendNotifyMessage. Để đăng một thông báo vào hàng đợi tin nhắn của một chủ đề và quay lại ngay lập tức, hãy sử dụng chức năng PostMessage hoặc PostThreadMessage .

Hướng dẫn tốt về hai chức năng này và cách sử dụng chúng là here.

Kết nối với WPF được thảo luận trong this SO question.

Các vấn đề liên quan