Das heißt, du rufst eine MFC-Methode aus einem anderen Thread als dem, der das Objekt erstellt hat, auf. Das ist schon mal falsch.
Momentan signalisierst du dem Thread über eine Boolvariable, dass er sich beenden soll. Das ist nicht zuverlässig. Statt dessen sollst du ein Event benutzen. Der Thread wartet regelmäßig (z.B. in der Schleife) mit Timeout 0 auf das Event und beendet sich, wenn es signalisiert ist.
Stichworte: CreateEvent, SetEvent, WaitForSingleObject.
Nachdem das Event gesetzt wurde, kannst du mit WaitForSingleObject auf das Threadhandle warten, bis der Thread wirklich beendet ist.