Mesaj blocajelor

Un fir de care apelează funcția SendMessage pentru a trimite un mesaj la un alt fir nu poate continua executarea până când procedura fereastra primește mesajul revine. Dacă firul care le prime?te are control în timp ce mesajul de prelucrare, firul trimiterea nu poate continua executarea, deoarece acesta este de așteptare pentru SendMessage pentru a reveni. Dacă firul primirea apoi trimite un mesaj firul de apel în timp ce acesta este blocat, aceasta poate provoca un impas să apară.

Rețineți că firul receptoare nu nevoie de randament controlul, în mod explicit; oricare dintre următoarele funcții de asteptare poate provoca un fir să cedeze controlul implicit.

DialogBox
DialogBoxIndirect
DialogBoxIndirectParam
DialogBoxParam
GetMessage
MessageBox
PeekMessage

Pentru evitarea blocajelor potențiale, luați în considerare utilizarea funcțiilor SendNotifyMessage sau SendMessageTimeout . În caz contrar, o procedură de fereastră poate determina dacă un mesaj a primit a fost trimis de un alt fir de funcția InSendMessage de asteptare. Inainte de a apela orice funcțiile în lista precedent în timp ce un mesaj de prelucrare, procedura fereastra în primul rând ar trebui să apel InSendMessage. Dacă această funcție întoarce TRUE, procedura fereastra trebuie să apela funcția ReplyMessage înainte de orice funcție care provoacă firul să cedeze controlul.

Index