Отдельное соединение dbx с потоком - PullRequest
5 голосов
/ 12 января 2010

Я сделал небольшое приложение, которое подключается к базе данных mysql с помощью dbx. Он работает нормально с моим локальным сервером MySQL, но он должен работать с удаленным сервером.

Подключение к удаленному серверу занимает несколько секунд, что приводит к зависанию приложения.

Итак, мой вопрос, как я могу поместить код подключения в другой поток?

Мне нужно каким-то образом передать это соединение основному потоку, чтобы моя база данных в основной форме работала.

Я читал, что у базы данных, работающей в другом потоке, должны быть свои собственные соединения. Поэтому я не уверен, как делать то, что я хочу.

Есть идеи? Есть что почитать о работе с удаленными серверами?

Спасибо.

Редактировать: компоненты, которые я использую в форме: TSQLConnection -> TSimpleDataSet> TDataSource> TDBGrid.

Ответы [ 2 ]

1 голос
/ 13 января 2010

Соединение для каждого потока требуется только в том случае, если ваши потоки будут выполнять одновременный доступ к базе данных. По сути, вы хотите, чтобы поток подключался и возвращался к вам после установления соединения. Вы можете сделать это в потоке, и когда поток будет готов (т.е. соединение установлено), он может отправить сообщение обратно в основной поток, чтобы сообщить ему, что соединение dbx теперь доступно. Посмотрите это руководство для идей о том, как настроить поток и обмениваться информацией между потоком и основным потоком VCL. Учебник по потокам

0 голосов
/ 13 января 2010

это действительно помогло мне сделать многопоточные приложения в Rad Studio Написание многопоточных приложений Index

если что-нибудь еще отправлю и постараюсь помочь

...