Threads und Callbacks
-
Hi Leute.
Ich hab hier n Problem mit Threads und CALLBACKS.
Ich habe ein Programm mit einem Thread, welcher (so hab ich es bis jetzt geplant) etwas bearbeitet und dann sein Ergebnis per CALLBACK zurückgibt.
In der Callback-Funktion werden Eigenschaften von VLC-Komponenten verändert.
Das Probelem ist ja jetzt, dass die CALLBACK funktion aus dem Thread aufgerufen wird und somit nicht von dem Main-Programmthread bearbeitet wird.
Aber sowas ist ja eigentlich verboten und fürht evtl. zu Inkonsistenz.
Wenn ich einene Thread Erstelle, steht ja immer dabei man soll VCL Eigenschaften nur mit Synchronize ändern.Wie Vermeide ich jetzt dass es zu Fehlern kommen kann. Und warum kann man VLC Objekte in CALLBACKS verändern die vom System aufgerufen werden (EnumWindows)...die werden ja auch nicht in meinem Mainthread aufgerufen oder versteh ich da was falsch ? Dann wärs ja theoretisch auch für diese verboten auf VCL Objekte zuzugreifen !?
Gruß Jens
-
Hallo Jensiboy (cooler Name-),
wenn du EnumWindows aus dem Mainthread aufrufst, dann wird dieser (als auch die Callback-Methode) ebenfalls im Mainthread ausgeführt und daher kannst du problemlos auf VCL-Komponenten zugreifen.
Wenn du aus dem Thread heraus die Callback-Funktion aufrufst, dann pack einfach noch ein Synchronize darum.
Wenn du zusätzlich noch Parameter mitgeben willst, dann mußt du etwas tricksen, da Synchroize leider keine Methoden mit Parametern behandeln kann: speichere die Parameter in Membervariablen deines Threads und verwende diese dann für den Callback-Aufruf.
s.a. http://www.c-plusplus.net/forum/viewtopic-var-t-is-259250.html