Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
Delphi 10 Seattle Enterprise
|
AW: Firemonkey - ungültige Zeigeroperation
20. Feb 2014, 22:13
Es wird im else
-Zweig kein Thread aufgerufen, sondern aus dem aktuellen Thread-Kontext heraus wird synchronisiert die andere Methode aufgerufen.
Dieses geschieht aber auch nur dann, wenn der Aufruf nicht im Kontext des MainThreads erfolgt.
Der Aufruf erfolgt aber eben immer im MainThread-Kontext (darauf habe ich schon hingewiesen und auf die Dokumentation, die sagt, dass Synchronize im MainThread-Kontext böse ist).
Ich wollte damit nur verdeutlichen, wie man so einen synchronisierten Aufruf implementieren sollte, damit es eben nicht da zu Problemen führen kann.
Im Setter wird ein Vergleich gemacht und wenn das nicht passt, dann wird der Rest ausgeführt.
Aber du hast insofern Recht, weil dort der Setter und darin eine weitere Funktion aufgerufen wird. Und jeder call kostet durchaus Zeit.
Darum gibt es ja auch für performance-relevante Funktionen den Tipp, diese als inline
zu deklarieren. Das macht die EXE zwar grösser aber auch schneller.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
|