בנעילות הודעה

הליך משנה, אשר קוראת לפונקציה SendMessage כדי לשלוח הודעה הליך משנה אחר אין אפשרות להמשיך בביצוע עד תחזיר ההליך חלון שמקבל את ההודעה. אם הליך משנה המקבל מניבה הפקד בעת עיבוד הודעת, הליך המשנה השולח אין להמשיך בביצוע, מכיוון שהוא מחכה SendMessage להחזיר. אם הליך משנה המקבל מכן שולח הודעה שהליך המשנה הקורא בזמן שהוא חסום, הוא עלול לגרום קיפאון להתרחש.

שים לב כי הליך משנה המקבל צריך לא יניבו פקד במפורש; קריאה אחת מהפונקציות הבאות עלולה לגרום להליך משנה תשואות פקד במרומז.

DialogBox
DialogBoxIndirect
DialogBoxIndirectParam
DialogBoxParam
GetMessage
תיבות הודעות
PeekMessage

כדי להימנע סדרתית, שקול להשתמש בפונקציות SendNotifyMessage או SendMessageTimeout . אחרת, פרוצדורה של חלון ניתן לקבוע אם הוא קיבל הודעה נשלחה על-ידי הליך משנה אחר על-ידי קריאה לפונקציה InSendMessage . לפני קריאה אחת מהפונקציות ברשימה לעיל בעת עיבוד הודעה, ההליך החלון צריך ראשית קריאה InSendMessage. אם פונקציה זו מחזירה TRUE, ההליך חלון יש לבצע קריאה לפונקציה ReplyMessage לפני כל פונקציה הגורמת תשואות בקרת הליך משנה.

Index