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 !?
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.de/forum/viewtopic-var-t-is-259250.html
Nächstes Thema anzeigen Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums
für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de
Werbekostenerstattung verdient werden kann.
Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de
enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt
(vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in
privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden.
Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere
übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.