Deadlocks ข้อความ

ด้ายที่เรียกใช้ฟังก์ชันเรียก sendmessage ระหว่างงานเพื่อส่งข้อความไปหัวข้ออื่น ไม่สามารถดำเนินการจนกว่ากระบวนการหน้าต่างที่ได้รับข้อความส่งกลับต่อไป หากเธรดการรับทำให้ตัวควบคุมขณะประมวลผลข้อความ เธรดการส่งไม่สามารถทำดำเนินการ เนื่องจากกำลังรอเรียก sendmessage ระหว่างงานเพื่อส่งกลับไป หากเธรดการรับแล้วส่งข้อความกับเธรดการโทรในขณะที่ถูกบล็อค มันอาจทำให้เกิดการล็อกตายเกิดขึ้น.

หมายเหตุผลตอบว่า หัวข้อการรับสินค้าต้องไม่แทนตัวควบคุมอย่างชัดเจน การโทรของฟังก์ชันต่อไปนี้อาจทำให้เธรดเพื่อควบคุมโดยปริยาย.

DialogBox
DialogBoxIndirect
DialogBoxIndirectParam
DialogBoxParam
GetMessage
MessageBox
PeekMessage

เมื่อต้องการหลีกเลี่ยงการเกิด deadlocks พิจารณาใช้ฟังก์ชันSendNotifyMessageหรือSendMessageTimeout มิฉะนั้น กระบวนงานหน้าต่างสามารถกำหนดว่า ข้อความที่ได้รับมาจากเธรดอื่น โดยการเรียกฟังก์ชันInSendMessage ก่อนการเรียกฟังก์ชันใด ๆ ในรายการข้างต้นในขณะที่การประมวลผลข้อความ กระบวนการหน้าต่างควรก่อนโทรInSendMessage ถ้าฟังก์ชันนี้ส่งกลับค่า TRUE กระบวนการหน้าต่างต้องเรียกใช้ฟังก์ชันReplyMessageก่อนที่จะทำให้หัวข้อเพื่อควบคุมฟังก์ชันใด ๆ.

Index