2010-04-01 2 views
1

J'utilise WinApi.Envoi d'un message depuis un thread non-gui travaillant vers la fenêtre principale

est SendMessage/PostMessage une bonne méthode, thread-safe de communiquer avec la fenêtre principale? Supposons que le thread de travail crée une image bitmap qui doit être affichée à l'écran. Le thread de travail alloue un bitmap, envoie un message avec un pointeur vers ce bitmap et attend que le thread graphique le traite (par exemple en utilisant SendMessage). Le thread de travail ne partage aucune donnée avec d'autres threads.

Est-ce que je rencontre des problèmes avec une telle conception?

Y a-t-il d'autres possibilités qui n'introduisent pas la synchronisation de fil, de verrouillage, etc.?

Répondre

2

C'est une méthode décente de la synchronisation des threads, et devrait être bien, aussi longtemps que vous faites attention que:

  • soit le fil conducteur conserve le bitmap et le thread de travail commence une nouvelle, ou vice versa, de sorte qu'après SendMessage renvoie seulement un thread a accès à l'image bitmap.
  • vous ne modifiez pas accidentellement le SendMessage à un PostMessage plus tard, en oubliant qu'il fournit votre synchronisation ainsi que la communication inter-thread.
Questions connexes