Je travaille actuellement sur un programme utilisant MFC. La fonction tierce en cours démarre un thread après l'exécution d'une action à l'aide de MFC (c.-à-d. Cocher une case à cocher, qui démarre un thread MFC je crois).MFC/3ème partie multithreading hang
Le problème se produit lorsque je coche la case, à quel point le programme entier se bloque. J'ai lu quelques discussions intéressantes sur CProgramming et msdn, il semble que le problème se produit parce que le nouveau thread tiers appelle WaitToSomething() lorsque MFC met à jour un contrôle.
Quelque chose intéressante à noter:
- Quand je déboguer le programme, le programme se bloque (alias appelle à plusieurs reprises WaitToRead().) Après avoir cocher la case et un nouveau thread essaie de démarrer
- Lorsque Je lance le programme sans débogueur, le programme est bien jusqu'à ce que je passe à une autre fenêtre (ie navigateur Internet, Bloc-notes, etc.)
Mon hypothèse:
- vérifier pour vous assurer que MFC a terminé la mise à jour de la commande avant de lancer un nouveau thread
Si quelqu'un a des suggestions ou des solutions, s'il vous plaît laisser un commentaire. Merci.
Edit:
MFC est thread-safe au niveau de l'objet (uniquement au niveau de la classe), donc problème se produit lorsque deux threads fonctionnent sur le même objet CButton.
Q: Comment sécuriser le filetage?
pouvez-vous poster des codes quand il démarre un fil. – Turbot