ich arbeite auch im moment an einer multithreading-anwendung und muss aus mehreren threads variablen lesen bzw. schreiben... da hats bei mir auch oft genug exceptions gehagelt
dann habe ich von den CriticalSections zur absicherung von solchen lese/schreibvorgängen gelesen...
und unter delphi gibt es die klasse TMultiReadExclusiveWriteSynchronizer...
ein einfaches
T:=TMultiReadExclusiveWriteSynchronizer.Create;
erstellt das objekt und mit
T.BeginWrite;
bzw.
T.EndWrite;
kann ein schreibvorgang abgesichert werden... sprich solange nicht T.EndWrite; aufgerufen wurde, haben andere threads keinen lese-zugriff und warten bis endWrite aufgerufen wurde...
Voraussetzung ist, dass Lesevorgänge dann auch mit T.BeginRead; und T.EndRead; umgeben sind...
T.BeginWrite;
Variable1:=Wert;
T.EndWrite;
T.BeginRead;
Variable2:=Variable1;
T.EndRead;
Lesen funktioniert gleichteitig schreiben nur exclusiv...
Vielleicht Bringts dem einen oder anderen was...