Ho trovato il problema.

In pratica:
creo contemporaneamente Animazione1 e Animazione2 e i relativi thread di lettura.

Animazione1, chiama LoadFile(): TStream, questo blocca la ThreadList, la quale viene rilasciata alla fine della funzione(*). a questo punto Animazione 1 inizia a copiare i dati dallo Stream nella propria cache.

Animazione2, appena la Thread List viene rilasciata dalla Animazione1 (*) inizia a copiare anche lei i dati dallo Stream alla sua cache; qui nasce il problema perchè Animazione1 non ha ancora terminato di farlo.


ho eliminato quindi l'UnlockList dalla fine della funzione LoadFile(), chiamandolo invece dalla classe Animazione dopo che i dati sono stati completamente prelevati dallo Stream.

Andrea.