2010-01-12 56 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