Bonjour,
Un petit cas d'école tout bête, mais je n'arrive pas à faire ce que je veux...
J'ai une DLL dont le point d'entrée est une fonction statique qui instancie une classe de traitement.
Cette classe de traitement construit une CDialog et lance un thread (_beginThreadex) qui fait un travail long.
La CDialog doit afficher l'état d'avancement du thread et permettre de le stopper.
Pour communiquer avec la CDialog, le thread poste régulièrement des messages d'avancement et un message de fin. Jusque-là tout va bien...
Mon souci est qu'à la fin de l'exécution du thread, j'ai besoin de retourner dans ma classe de traitement.
Le seul moyen que j'ai trouvé est de passer par la CDialog en utilisant le message de fin posté par le thread.
Les autres solutions (WaitForSingleObject ou section critique) ne fonctionnent pas car elles bloquent le thread principal et la CDialog ne réagit plus.
Pour arriver à mes fins, je dois donc faire un lien de la CDialog vers la classe de traitement... ce que je voudrais éviter !
Quelqu'un a-t-il une solution ?
PS : j'ai essayé de faire communiquer mon thread de travail avec la CWinApp (plutôt qu'avec la CDialog) en utilisant PostThreadMessage vers des messages traités au niveau de l'appli mais pas moyen de le faire marcher : les messages sont bien postés mais n'arrivent pas dans la CWinApp (même en redéfinissant PreTranslateMessage et sans toucher à la fenêtre !).
Partager