Flackern bei Threadaktivität



  • Hallo erstmal...

    Ich hab da so 'n Problem mit meinen Threads. Immer wenn die Abfrage in dem Thread läuft, flackern die Images in meinem Hauptformular. Der Thread ist dazu da, die Quelle der Bilder zu ändern, wenn sich eine bestimmte Variable ändert -wenn euch das hilft. Allerdings werden die Images erst angerührt, wenn sich die Variable tatsächlich geändert hat.

    while (true)
    {
       [...]
    
       if (x != checksum)
       {
          aktualisieren(); //...der Quellen, falls nötig
       }
    
       Sleep(500);
    }
    

    ich bin noch nicht so lange dabei, deshalb bitte für Blöde erklären, wird wohl für die meisten kein Prob sein...Danke!

    <edit>Bitte Code-Tags benutzen!</edit>

    [ Dieser Beitrag wurde am 17.01.2003 um 08:30 Uhr von junix editiert. ]



  • Wenn sich die Quelle dauernd ändert, kann es durchaus zu einem flackerneffekt beim Image kommen. Da ich dich nicht wirklich komplett verstanden habe (ich kenn dein Projekt ja nicht), wageich mal einen Schuss ins blaue: Such hier im Forum mal nach "Double Buffering" und "Page swapping" Ich denke einer dieser Mechanismen könnte dein Problem lösen.

    -junix

    <edit>Ahja, btw. es gibt leute die heir erheblich dümmere Fragen stellen (: Also mach dir keinen kopf (-;</edit>

    [ Dieser Beitrag wurde am 17.01.2003 um 08:44 Uhr von junix editiert. ]


  • Mod

    Hallo

    schau doch mal mit dem Debugger warum x != checksum ist

    MfG
    Klaus



  • Ahja, und was ich vergass: Schreib nicht "while (true)" sondern frag das Terminate-Flag ab. (näheres in der Hilfe unter den Eigenschaften von TThread)

    -junix



  • *smile*

    Jo, es hat geklappt...
    Als ich die ersten Beiträge zum Thema DoubleBuffer gelesen hab, bin ich ja erst ein bisschen blass geworden. Doch dann hab ich gelesen, dass es seit BCB4 die Eigenschaft DoubleBuffered des Formulars einfach auf treu setzten kann. Und sieh an: KEIN FLACKERN mehr. 😃

    Danke dafür.

    @KlausB : in "x" wird ein Wert geladen, den eine digitale I/O-Karte über die Zustände der Eingänge liefert. Heißt: wenn sich ein Zustand ändert und nicht mehr der Prüfsumme "checksum" entspricht, wird dieser neue Wert an eine Methode übergeben, die die Änderungen verarbeitet und die entsprechenden Änderungen an den Bildquellen vornimmt. (Ist ein Schulprojekt an meinem Auto 🙂 )

    @junix : Danke für den Tip mit DoubleBuffered. Die Sache mit dem Terminate-Flag hab ich auch eingebaut.

    Bis zum nächsten mal.


Anmelden zum Antworten