TThread nach Terminate noch Vorhanden, Prg hackt
-
Hallo Leute,
ich habe ein kleines Prog geschrieben bzw. bin dabei, welches
mittels Threads Bilder aus dem Internet ladet und Anzeigt, ich
verwende dazu 6 Threads wobei jeder ca. 3-4 Bilder einladet, also
insgesamt 18 bis 24.Wenn ich nun die Bilder einlade und diese Angezeigt werden, also
wenn die Threads ihre Aufgabe erledigt haben, bleiben diese
bestehen und mein Prog hackt bei der Darstellung, also bei Fenster
verschieben, ScrollBox schieben wo die Bilder drinn sind.die Threads haben eine Public Variable bool Twork
wenn der Thread anfängt zu arbeiten setzt er diese auf true und
wenn er fertig ist auf false.
Über ein Timer im Hauptprogramm prüfe ich ständig ob Twork false ist,
wenn ja dann wird ->Terminate() ausgeführt und der Thread sollte sich
beenden, aber laut Debuger ist er, bzw. alle noch daKann mir einer sagen was falsch ist?
Der Code in Execute der Threads: (ich verwende nicht Sychronize wegen speed)
void __fastcall Tpicload::Execute() { SetName(); FreeOnTerminate = true; Twork = true; while (!Terminated) { if (Twork) { for (int i=0;i<AnzahlBilder;i++) { BildUrl = Bilder[i]; //--als Beispiel //-- Bilder laden und setzten etc.. } Twork = false; } } }
Sobal die Threads gestartet werden wird auch der Timer zum prüfen
aktiviert, jede Sekunde (Interval 1000)gruß Micha
-
Hast du dein eigenes Posting schonmal durchgelesen? Irgendwie hab ich nciht die Hälfte von dem geschnallt was du uns da sagen wolltest... Vielleicht solltest du dich mal mit dem Problem auseinandersetzen und einen schönen Prosa-Text darüber verfassen anstelle von so einem gestammel..
-junix
-
promicha schrieb:
Über ein Timer im Hauptprogramm prüfe ich ständig ob Twork false ist, wenn ja dann wird ->Terminate()
Bist Du sicher, daß die Zeile mit der ->Terminate() auch erreicht wird?
Vielleicht debuggen?!
Denn bei mir funktioniert Dein Code. Am Ende ist der Thread nicht mehr da (Task-Manager)void __fastcall TTestThread::Execute() { FreeOnTerminate = true; Form1->Twork = true; while (!Terminated && Form1->Twork) { for (iCount=0; iCount<5000; iCount++) Synchronize(UpdateCaption); //funktioniert auch ohne Synchronize: //Form1->Caption = IntToStr(iCount); Form1->Twork = false; } }
MfG
xy
-
ich habe den Fehler gefunden, der lag in der Schleife des Threadcodes.
@junix, mein Name ist zwar Michael, aber nicht Michael Ende, daher kann
ich auch nicht schreiben wie ein Buchauthor und wenn du nicht verstehst
was ich schrieb, brauchst du ja nicht zu Antworten, oft ist garnichts mehr
als solch ein Kommentar, gele
-
promicha: Wenns dir niemand sagt, achtest du nie auf sowas. Solltest wirklich etwas mehr darauf Achten... Vielleicht hilfts dir ja, wenn du in Zukunft zunächst mal die Punkte die du zur Sprache bringen willst notierst und sie dann zusammensetzt. Ich glaube nicht, dass wir hier viele Buchautoren als user haben, trotzdem schaffen es 98% davon einen zusammenhängenden, strukturierten Text zu verfassen, ohne 100mal "also..." zu schreiben.
-junix
-
OFFTOPIC aber vieleicht wichtig:
@junix, im Grunde hast du Recht und sicherlich ist das auch nicht
meine Grundart mich Auszudrücken, aber wir haben beide das gleiche
Problem: Ich schreibe schnell und versuche so viel Informationen wie
möglich wieder zu geben, bevor euer Server wieder Streikt (hat er heute
am 5.03.03 ziemlich oft) oder die PHP-Session abgelaufen ist, wie auch
andere, Web-bezogene, Probleme. Oder man muß schnell auf dem PottAus diesem Grund ist vermutlich dieser "also.." Text enstanden, wenn
du aber dazu mal dein Posting anschaust siehst du einen Tippfehler, der
vermutlich auch nicht entstanden währe wenn du nicht mit 250KMh getippt hättest
(nciht = nicht) und das Posting wäre sicherlich auch höfflicher Ausgefallen.
Also, hast du erst Nachgedacht und dann geschrieben, wohl kaum sonst hättest
du es höfflicher bzw. mit Smilies versehen geschrieben.
Erkennst du die Gleicheit, bzw. Gemeinsamkeit, wir beide schrieben unter
Eile, also Zeitlicher Beschränkung.
Bei meinen anderen Posts gabs ansich keine Kommunikations Probleme. Mit
meinem Hinweis wohlte ich Ausdrücken das du bevor du gleich jemand
anfährst wegen seine Ausdrucksweise, erst selbst Nachdenken sollst und
nicht im Affeckt handeln wie ich und paar andere ihr Post schreiben.
Und so unverständlich kann mein Text ja nicht sein, da "xy" ihn verstanden
hat.
Also, wenn du wegen Durchfall heute in Eile bist, seist du EntschuldigtIch hoffe du verstehst wie ich das meine, es giebt ein Sprichwort:
Der Ton macht die Musik.Es macht ja auch kein guten Eindruck wenn man nach etwas sucht, und wenn
man fündig wird auf einem Thema, das erste ein Dummer Spruch vom Mod ist.
Das verscheucht Neulinge.
Das mein Post vorschullmässig Formuliert wurde in der Eile, ist richtig,
aber darauf kann man dann erwarten, das Hinsweise darauf mit einer Portion
Höfflichkeit entsteht, oder wenigstens belustigt wird und mit Smilies
geschmückt die Irronie darstellt.Ich bin nicht Nachtragend oder so, da du ja im Grunde Recht hast, aber
genauso nen falschen Text gewählt hast, wie ich selbst. Meine Anregung
soll nur sein das du selbst auch erst auf "Vorschau" klickst und nochmal
in Ruhe liest was du schreibst und auch darüber Nachdenkst ob das
Menschlich Richtig ist und nicht jemanden Anfahre.Nochmal: Der Ton macht die Musik;
Hier mal zwei Beispiele wie es hätte sein können:
Spassig:
Was laberst du da fürn Schnuller-Zeug Micha
Ich hab NULL Verstanden, trink nen Kaffee und schreib es mal GenauerHöfflich:
Micha, aus deinem Post werde ich nicht Schlau, er ist ziemlich schlecht,
bzw. Unverständlich beschrieben. Schreib doch mal die Punkte auf die Wichtig
sind und schreibe dann daraus einen Verständlichen Text, damit wir auch helfen können!Anfahrend Unhöfflich:
.....so einem Gestammel...Mein Motto: immer den Ball flach halten und höfflich sein, dann ist keiner
Verärgert und Besucher bekommen kein Kolaps.gruß Micha
OFFTOPIC END
-
Ich hatte heut morgen verpennt, das zu schreiben: Die Diskussion um das OT-Thema geht hier weiter: http://www.c-plusplus.net/forum/viewtopic.php?t=67213
-junix