Ich hab da ja so meine Probleme mit Threads
Ich habe mir mal gemerkt, dass "Threads + Zugriffe auf VCL = böse". Hab interessehalber mal ausprobiert, innerhalb der execute-Routine eines TThread-Objects einfach so auf die VCL zuzugreifen, und natürlich ist mir das Programm sofort um die Ohren geflogen. So was muss man synchronisieren, klar.
Jetzt bin ich in einem kleinen Beispielprogramm zur Bass.dll auf BeginThread gestoßen, und in der dort aufgerufenen Thread-Funktion wird fröhlich auf Variablen und Label der Hauptform zugegriffen (auch schreibend), und nichts passiert (also nichts schlimmes, sondern nur das gewollte).
Ich habe auch gelesen, dass BeginThread dafür sorgt, dass
IsMultiThread auf True gesetzt wird, wodurch der Heap thread-safe wird.
Heißt das nun, dass ich unbesorgt in der Threadfunktion auf die VCL zugreifen darf, oder muss ich da noch was beachten? Und wenn ja, wie mach ich das?
Und kann ich den Thread ggf. dadurch vorzeitig beenden, dass ich bei Klick auf "Abbrechen" eine Property der Form setze, und diese an verschiedenen Stellen in der Threadfunktion abfrage mit
if Form1.ThreadAbort then exit;?
We are, we were and will not be.