2010-01-12 26 views
5

我制作了一个使用dbx连接到mysql数据库的小应用程序。它适用于我的本地mysql服务器,但它应该可以与远程服务器一起使用。单独的dbx连接到线程

连接到远程服务器需要几秒钟时间,这会冻结应用程序。

所以我的问题是,我怎么能把连接代码放在不同的线程?

我必须以某种方式将该连接传递给主线程,以便我可以在主窗体上使用dbgrid。

我读过那些在不同线程中工作的数据库应该有自己的连接。所以我不知道如何去做我想做的事。

任何想法?阅读关于使用远程服务器的任何内容?

谢谢。

编辑:我在窗体上使用的组件是:TSQLConnection - > TSimpleDataSet> TDataSource> TDBGrid。

+0

用户可以在等待连接建立的同时有效地与您的程序进行交互吗? – 2010-01-12 19:54:04

+0

嗯,不是真的,也许应该有一个“取消”按钮,但没有。我只是希望它显示“连接”消息,而不会冻结应用程序。 – Mario 2010-01-13 00:35:07

回答

0

这真的帮了我在公司的RAD Studio做多线程应用程序 Writing multi-threaded applications Index

,如果他们是任何别的东西后和虐待尽力帮助

+0

我一直在阅读帮助的那一部分,但我仍然不确定如何在单独的线程中创建dbx连接并与主线程共享。 – Mario 2010-01-13 00:49:05

1

你只需要每个线程的连接,如果你的线程是将同时进行数据库访问。基本上你想要的是一个线程来连接,并在建立连接时返回给你。您可以在线程中执行此操作,并且当线程就绪(即建立连接)时,它可以将消息发送回主线程,让它知道dbx连接现在可用。有关如何设置线程以及线程和主VCL线程之间的通信的信息,请参阅本教程。 Threading Tutorial

+0

+1是的,网络连接等资源可能在多线程应用程序中不同步。这同样适用于FTP连接,文件指针等。因此,为每个线程创建单独的资源是一种方法。 – 2010-01-14 02:13:10