Správa uviaznutiu

Vlákno, ktoré zavolá funkciu SendMessage zasielať správy iným vláknom nemôže pokračovať, vykonávajúci kým okno postup, ktorý dostane správy vráti. Ak prijímajúca vlákno výnosy kontroly počas spracovania správy, odosielanie vlákno nemôže pokračovať vykonávajúci, pretože čaká SendMessage vrátiť. Ak prijímajúca vlákno potom odošle správu na volajúci vlákno, kým je pohľad blokovaný, môže spôsobiť zablokovanie.

Všimnite si, že prijímajúci vlákno potrebujú nie je výnos kontrolu výslovne; volanie každom z nasledujúcich funkcií môže spôsobiť vlákno prinášať kontrolu implicitne.

DialogBox
DialogBoxIndirect
DialogBoxIndirectParam
DialogBoxParam
GetMessage
Okno s hlásením
PeekMessage

Sa zabránilo uviaznutiu potenciál, zvážte použitie funkcie SendNotifyMessage alebo SendMessageTimeout . Okno postup v opačnom prípade môžete určiť, či ju dostal bola odoslaná v inom vlákne volaním funkcie InSendMessage . Pred volaním akýchkoľvek funkcií v predchádzajúcom zozname pri spracovaní správy, okno postup najskôr vyzvat InSendMessage. Ak táto funkcia vráti hodnotu TRUE, okno postup musí volať funkciu ReplyMessage pred žiadnu funkciu, ktorá spôsobí vlákno prinášať kontroly.

Index