In linea generale, si deve solo tenere conto che TThreadList rappresenta una lista di oggetti che incorpora gli strumenti necessari per l'accesso sincronizzato da più thread alla lista stessa, e va utilizzata chiamando LockList (una sola volta) ottenendo come valore di ritorno la lista degli oggetti su cui lavorare (bloccando, cioè mettendo in attesa, gli altri thread) e invocando alla fine UnlockList quando l'uso della suddetta lista è terminato.
Se si fanno più chiamate a LockList, devono corrispondere altrettante chiamate a UnlockList, altrimenti la lista rimane bloccata.
La prassi di utilizzo si può schematizzare così:
Se il meccanismo "non funziona", l'errore specifico è da ricercarsi altrove.codice:var List: TList; begin List := ThreadList.LockList; try // ...uso di List... finally ThreadList.UnlockList; end; end;
Ciao!