004
18.05.2004, 09:06 Uhr
ao
(Operator)
|
Zitat: |
AlfameisterT postete Aber dann wird ja immer wieder ein neuer Thread gestartet
|
Und du überschreibst dir jedesmal die m_strPath-Variable, d.h. du findest wohl den Rückweg nicht mehr.
Der Fehler ist, du hast die Funktionen so verschachtelt, dass jeder rekursive Aufruf erst mal bei AfxBeginThread vorbeiführt. Das darf nur einmal am Anfang geschehen.
Du brauchst im Prinzip drei Funktionen:
1. einen Thread-Erzeuger, der z.B. AfxBeginThread aufruft (genau einmal). 2. eine Threadfunktion (threadFindFile) 3. eine weitere Funktion, die rekursiv in den Verzeichnisbaum eintaucht. Diese wird einmal von der Threadfunktion aufgerufen und ruft sich dann selber auf. Das könnte auch die Threadfunktion selber sein, aber wozu? Eine Funktion mehr kostet dich nichts und verbessert die Übersichtlichkeit.
Bearbeitung von ao: |
Nein, vergiss das. Du musst den Thread ja wieder terminieren, und das geht am Ende der Threadfunktion. Dazu darf die Threadfunktion nicht rekursiv sein. Also auf jeden Fall drei Funktionen schreiben!
|
Den Pfadnamen solltest du nicht in einem Klassenmember halten, sondern in lokalen Variablen innerhalb der Funktionen, dann wird er auch nicht überschrieben. Dieser Post wurde am 18.05.2004 um 09:09 Uhr von ao editiert. |