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 da

    Kann 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 Pott 😃

    Aus 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 Entschuldigt 😃

    Ich 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 Genauer 😉

    Hö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


Anmelden zum Antworten