2010-10-19 17 views
0

Après avoir soigneusement lu this KB article j'ai remarqué une déclaration intéressante là-bas. L'article dit que si j'ai un thread STA et que le fil ne distribue pas des messages Windows alors que le filPourquoi le thread STA "perd-il une petite quantité de mémoire" s'il ne parvient pas à envoyer les messages Windows?

  • ne pourront pas recevoir des événements COM forment un serveur COM
  • peut provoquer des diffuseurs de messages à accrocher (et donc parfois provoquer un blocage)
  • étonnamment ...fuira de petites quantités de mémoire

Alors que les deux premières instructions sont plutôt raisonnables - les messages Windows sont utilisés pour envoyer des appels COM à des objets dans des appartements à un seul thread - je ne reçois pas du tout le troisième.

Pourquoi exactement un thread "fuite de petites quantités de mémoire" s'il ne distribue pas les messages Windows?

Répondre

1

Les messages que vous n'arrivez pas à envoyer - ils doivent être mis en file d'attente quelque part, en attendant ce moment fatidique où vous allez enfin commencer à les distribuer. Cette file d'attente va utiliser de la mémoire.

3

J'imagine parce qu'une structure est allouée et postée avec le message. Si le message n'est pas traité, la structure contenant les paramètres du message ne sera pas libérée.