Zitat von
Arnulf:
1. Sobald ich syncronize (fillListenFeld) aufrufe wird der zugriff des mainthreads gesperrt ( syncronisiert )
und ich kann auf den listenobjekten oder labels des mainthreads herumfurwerken.
es ist dabei nicht mehr notwendig criticalsection zu benutzen?????
Criticalsections werden hier nicht benötigt.
Zitat von
Arnulf:
2. wenn ich eine aus der syncronized procedure eine andere Funktion aufrufe wird diese
ebenfalls syncronisiert aufgerufen?????
Ja.
Zitat von
Arnulf:
3. critical section muss ich in syncronized methoden nicht aufrufen nehme ich an ???
critical section dient nur zu dirrekten mannipulation von variablen oder eben kurz mal was auslesen ??
[TThread].Synchronize funktioniert so:
der Thread schickt dem Hauptthread eine Windows-Botschaft (Message).
In der Botschaft ist ein Methodenzeiger (also Adresse des Threadobjekts + Adresse der Procedure) enthalten.
Der Hauptthread arbeitet ständig seine Messagequeue ab, bis er auf diese Botschaft tritt.
Die Procedure, die Synchronize übergeben wurde wird nun im Kontext des Hauptthreads ausgeführt;
das ist der ganze Trick.