Sì: non si possono usare componenti da più thread, a meno di non prendere provvedimenti specifici, in quanto le classi della VCL (salvo quelle appositamente progettate) non sono multithreading. Questo consente di massimizzare le performance dell'intera libreria, ma è necessario proteggere l'accesso ai componenti quando questo avviene da più thread.Originariamente inviato da firefox88
Esiste un metodo più "pulito"?
E' possibile risolvere il problema in due modi (sono i primi che mi vengono in mente).
Quello più semplice è, secondo me, la creazione di un componente ADOConnection (e correlati) per ciascun thread che deve accedere ai dati, affinché non vi sia il tentativo di accesso contemporaneo ad un unico componente.
In alternativa, è possibile "sincronizzare" l'accesso ai componenti delegandolo al thread primario dell'applicazione, attraverso l'uso del metodo Synchronize che viene fornito dalla classe TThread.
So che è una spiegazione a grandi linee... prova a ricercare un po' di documentazione a riguardo per chiarire gli aspetti inerenti all'uso delle classi e dei metodi citati ed eventualmente scrivi ancora se hai altri dubbi.
Ciao!![]()