Der gesamte TCheckThread.execute wird vom Compiler weg optimiert, Ich habe schon einiges versucht, dazu aber keine Lösung gefunden.
Da es sich um eine virtuelle Methode handelt, kann der Compiler gar nicht wissen ob diese zur Laufzeit verwendet wird oder nicht.
Deshalb kann diese auch eigentlich nicht wegoptimiert werden.
Gründe die mir einfallen:
- Der gepostete Quelltext stimmt mit dem tatsächlichen nicht überein und das "override;" wurde bei der Deklaration von "Execute" vergessen.
- Die
Unit gehört nicht zu dem Projekt und wird deshalb nicht mehr compiliert, statt dessen wird eine alte "*.dcu" eingebunden.
Unabhängig vom aktuellen Problem sind mir die Property aufgefallen.
Der Zugriff auf Variablen aus mehreren Threads muss auf jeden Fall synchronisiert werden (z.B. Get- und Setmethoden mit TCriticalSection).