synchronize unterbricht den Thread und führt alle Anweisungen im Haupthread auf.
Grund dieser Übung ist der, das die
VCL nicht threadsicher programmiert wurde. Und zugriffe von zwei verschiedenen Threads zu unvollständig geschriebenen Variablen führen, und es dann meistens irgendwo abstürzt.
Threads werden in ihrer Ausführung von Windows einfach unterbrochen, auch wenn sie gerade eine "halbe" Variable geschrieben haben. Und wenn sie wieder eine Zeitscheibe bekommen machen sie dort weiter, wo sie aufgehört haben.
Mit einem einzigen Thread ist das natürlich kein problem, wenn aber ein zweiter Thread diese Variable dann benutzen will kommt es zu ungültigen nicht sinnvollen Werten.
Wenn Du aber mit einer eigenen Objectstruktur arbeitest, kannst Du diese Threadsicher gestalten.
(critical Sections usw.)
Ziel sollte also sein, die Anweisungen in synchronize so gering wie möglich zu halten.
(Denn dazu is ja sicherlich der Thread da, sonst hätte der Thread ja keinen Sinn)
Zitat von
Manzoni:
Wenn ich die MainForm bewege, scheint der Thread auszusetzen!
da hast einen Fehler drin ..