Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Forentreff 2012     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: VCL (C++ Builder) ::  Threads und Callbacks     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
Jensiboy
Unregistrierter




Beitrag Jensiboy Unregistrierter 10:45:52 10.03.2010   Titel:   Threads und Callbacks            Zitieren

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
Th69
Mitglied

Benutzerprofil
Anmeldungsdatum: 25.03.2008
Beiträge: 2256
Beitrag Th69 Mitglied 11:56:41 10.03.2010   Titel:              Zitieren

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.de/forum/viewtopic-var-t-is-259250.html
C/C++ Forum :: VCL (C++ Builder) ::  Threads und Callbacks   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




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.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

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.