Bericht Deadlocks

Een thread die roept de SendMessage -functie een bericht verzenden naar een andere thread kan niet blijven uitvoeren totdat het venster procedure die het bericht ontvangt als resultaat gegeven. Als de ontvangende draad controle levert tijdens het verwerken van de berichten, kan niet de verzendende thread blijven uitvoeren, omdat het is wachten op SendMessage om terug te keren. De ontvangende draad stuurt een bericht naar de aanroepende draad terwijl het is geblokkeerd, kan leiden tot een impasse te voorkomen.

Merk op dat de ontvangende draad niet controle expliciet opbrengst moet; een van de volgende functies aanroepen kan leiden tot een draad aan opbrengst controle impliciet.

DialogBox
DialogBoxIndirect
DialogBoxIndirectParam
DialogBoxParam
GetMessage
MessageBox
PeekMessage

Om te voorkomen dat potentiële deadlocks, overweeg het gebruik van de functie SendNotifyMessage of SendMessageTimeout . Anders, de procedure van een venster kunt bepalen of een bericht dat het heeft ontvangen door een andere thread is verzonden door de InSendMessage functie. Voordat u een van de functies in de bovenstaande lijst tijdens het verwerken van een bericht, moet de procedure venster eerst InSendMessagenoemen. Als deze functie is TRUE retourneert, moet de venster-procedure de functie ReplyMessage voor elke functie waardoor de draad om de opbrengst van de controle oproepen.

Index