2010-01-12 7 views
5

Ho creato una piccola app che si collega a un mysql db usando dbx. Funziona bene con il mio server mysql locale, ma dovrebbe funzionare con un server remoto.Connessione dbx separata a una thread

La connessione al server remoto richiede alcuni secondi, il che blocca l'app.

Quindi la mia domanda è, come posso inserire il codice di connessione in un thread diverso?

Dovrò passare la connessione al thread principale in qualche modo, in modo che il dbgrid che ho sul modulo principale funzioni.

Ho letto che db stuff che lavorano in un thread diverso dovrebbero avere le proprie connessioni. Quindi non sono sicuro di come fare ciò che voglio.

Qualche idea? Qualcosa da leggere su come lavorare con i server remoti?

Grazie.

Modifica: i componenti utilizzati nel modulo sono: TSQLConnection -> TSimpleDataSet> TDataSource> TDBGrid.

+0

L'utente può interagire utilmente con il programma in attesa di stabilire la connessione? –

+0

Beh, non proprio, forse ci dovrebbe essere un pulsante "Annulla", ma no. Voglio solo che mostri un messaggio di "connessione" senza il blocco dell'app. – Mario

risposta

0

questo mi ha veramente aiutato per fare multi-applicazioni di filettatura in studio rad Writing multi-threaded applications Index

se loro è qualsiasi altra cosa posta e provare malato per aiutare

+0

Ho letto quella sezione della guida, ma non sono ancora sicuro su come realizzare una connessione dbx in un thread separato e condividerla con il thread principale. – Mario

1

Hai solo bisogno di una connessione per thread, se i tuoi fili sono sta per fare l'accesso simultaneo al database. Fondamentalmente quello che vuoi, è per un thread per connettersi, e tornare a te quando la connessione è stata stabilita. È possibile farlo in un thread e quando il thread è pronto (cioè stabilito dalla connessione), può inviare un messaggio al thread principale per far sapere che la connessione dbx è ora disponibile. Vedi questo tutorial per idee su come impostare il thread e comunicare tra il thread e il thread VCL principale. Threading Tutorial

+0

+1 Sì, le risorse come le connessioni di rete possono non essere sincronizzate nelle app multi-thread. Lo stesso vale per le connessioni FTP, i puntatori di file, ecc. Quindi la creazione di una risorsa separata per thread è la strada da percorrere. –

Problemi correlati