VCL Thread mit Callback synchronisieren
-
Hallo,
ich habe folgendes Problem:
Ich habe eine Callback-funktion von einem MMtimer (mit timesetevent funktion)
wie in diesem Beitrag:
http://www.c-plusplus.net/forum/viewtopic-var-p-is-1203829.html#1203829Diese Callback soll zur VCL von Borland abgesichert werden.
Es soll, solange die Callback ausgeführt wird, keine VCL durchkommen.
Wie mache ich das?
Oder habt ihr bessere Vorschläge?
Vielen Dank
W.Schleifer.
-
wschleifer schrieb:
Oder habt ihr bessere Vorschläge?
Kommt wohl drauf an, was dein Programm eigentlich machen soll.
-
wschleifer schrieb:
Es soll, solange die Callback ausgeführt wird, keine VCL durchkommen.
??? Soll die Applikation stehen bleiben oder worum genau gehts? Gemeinsame Speicherbereiche?
-
im callback werden zugriffe auf vcl elemente durchgeführt.
-->es sollen keine Konflikte mit Vcl Thread entstehen
es sollen callback und vcl "quasi" parallel laufen.
-
Das einfachste wird wohl sein, den Zugriff auf die VCL-Elemente in einer Funktion zu kapseln, die die Zugriffe eingebettet in eine CriticalSection ausführt. Der Callback sollte dann diese Funktion aufrufen oder zumindest die selbe CriticalSection betrachten.
-
Wäre eine andere Möglichkeit auch so eine Art Synchronize(), wie in der Thread Methode?
Könnte dann die Ausgabe später erfolgen, oder?
Kann mir jmd. vielleicht ein Beispiel geben, wie ich die Synchronize in einem Callback benutze?Vielen Dank
W.Schleifer.
-
Nach den Regeln von Aufwand und ertrag wäre mein Vorschlag vermtulich das wirtschaftlichste Vorgehen für eine saubere Lösung. Noch sauberer wäre das zwischenspeichern der Resultate des Threads in einem Bereich der nur über Zugriffsfunktionen welche CriticalSections einsetzen zugreifbar ist. Diesen beriech müsste man aus dem VCL_Thread dann regelmässig auslesen. Das ermöglicht dann eine schnelle Rückkehr zum eigentlich Auftrag des Threads und hält ihn nicht mit dem Neuzeichnen der Komponenten auf.