2010-01-12 19 views
5

J'ai créé une petite application qui se connecte à un db mysql en utilisant dbx. Cela fonctionne bien avec mon serveur mysql local, mais il est supposé fonctionner avec un serveur distant.Connexion séparée dbx à un thread

La connexion au serveur distant prend quelques secondes, ce qui gèle l'application.

Donc, ma question est, comment puis-je mettre le code de connexion dans un fil différent?

Je vais devoir passer cette connexion au thread principal en quelque sorte, de sorte que le dbgrid que j'ai sur le formulaire principal fonctionne. J'ai lu que les choses db travaillant dans un thread différent devraient avoir leurs propres connexions. Donc je ne sais pas comment faire ce que je veux.

Des idées? Quelque chose à lire sur le travail avec des serveurs distants?

Merci. Editer: Les composants que j'utilise sur le formulaire sont: TSQLConnection -> TSimpleDataSet> TDataSource> TDBGrid.

+0

L'utilisateur peut-il interagir utilement avec votre programme en attendant l'établissement de la connexion? –

+0

Eh bien, pas vraiment, peut-être qu'il devrait y avoir un bouton "Annuler", mais non. Je veux juste qu'il affiche un message de "connexion" sans que l'application gèle. – Mario

Répondre

0

ce qui m'a vraiment aidé à faire Apps multi thread en studio rad Writing multi-threaded applications Index

si leur est quelque chose d'autre poste et essayer mal pour aider

+0

J'ai lu cette section de l'aide, mais je ne suis toujours pas sûr de savoir comment créer une connexion dbx dans un thread séparé et la partager avec le thread principal. – Mario

1

Vous avez seulement besoin d'une connexion par fil si vos fils sont va faire l'accès simultané à la base de données. Fondamentalement, ce que vous voulez, c'est qu'un thread se connecte et revienne vers vous une fois la connexion établie. Vous pouvez le faire dans un thread, et lorsque le thread est prêt (c'est-à-dire, la connexion établie), il peut renvoyer un message au thread principal pour lui faire savoir que la connexion dbx est maintenant disponible. Consultez ce tutoriel pour savoir comment configurer le thread et communiquer entre le thread et le thread VCL principal. Threading Tutorial

+0

+1 Oui, les ressources telles que les connexions réseau peuvent ne plus être synchronisées dans les applications multithread. Il en va de même pour les connexions FTP, les pointeurs de fichiers, etc. La création d'une ressource séparée par thread est donc la solution. –