2010-01-12 8 views
5

Ich machte eine kleine App, die eine Verbindung zu einer MySQL-Datenbank mit dbx herstellt. Es funktioniert ok mit meinem lokalen mysql Server, aber es sollte mit einem entfernten Server arbeiten.Separate dbx-Verbindung zu einem Thread

Die Verbindung zum Remote-Server dauert einige Sekunden, wodurch die App eingefroren wird.

Also meine Frage ist, wie kann ich den Verbindungscode in einem anderen Thread setzen?

Ich werde diese Verbindung irgendwie an den Haupt-Thread übergeben müssen, damit das dbgrid, das ich auf dem Hauptformular habe, funktioniert.

Ich habe gelesen, dass db Sachen, die in einem anderen Thread arbeiten, ihre eigenen Verbindungen haben sollten. Ich bin mir nicht sicher, wie ich das machen soll, was ich will.

Irgendwelche Ideen? Gibt es etwas zu lesen über die Arbeit mit Remote-Servern?

Danke.

Bearbeiten: Die Komponenten, die ich auf dem Formular verwende, sind: TSQLConnection -> TSimpleDataSet> TDataSource> TDBGrid.

+0

Kann der Benutzer sinnvoll mit Ihrem Programm interagieren, während Sie auf die Herstellung der Verbindung warten? –

+0

Nun, nicht wirklich, vielleicht sollte es einen "Abbrechen" Knopf geben, aber nein. Ich möchte nur, dass eine "Verbindungs" -Meldung angezeigt wird, ohne dass die App einfriert. – Mario

Antwort

0

das hat mir wirklich geholfen, für Writing multi-threaded applications Index

in RAD Studio Multi-Thread Apps tun, wenn sie irgend etwas andere Post und krank versuchen ist

+0

Ich habe diesen Abschnitt der Hilfe gelesen, aber ich bin mir immer noch nicht sicher, wie man eine dbx-Verbindung in einem separaten Thread erstellt und sie mit dem Hauptthread teilt. – Mario

1

Sie brauchen eine Verbindung pro Thread nur zu helfen, wenn Ihre Themen sind werde gleichzeitig den Datenbankzugriff durchführen. Was Sie eigentlich wollen, ist, dass ein Thread eine Verbindung herstellt und zu Ihnen zurückkehrt, wenn die Verbindung hergestellt wurde. Sie können dies in einem Thread tun, und wenn der Thread fertig ist (d. H. Verbindung hergestellt), kann er eine Nachricht zurück an den Haupt-Thread senden, um ihn darüber zu informieren, dass die dbx-Verbindung jetzt verfügbar ist. In diesem Tutorial erfahren Sie, wie Sie den Thread einrichten und zwischen dem Thread und dem VCL-Hauptthread kommunizieren.

+0

+1 Ja, Ressourcen wie Netzwerkverbindungen können in Multithread-Anwendungen nicht mehr synchron sein. Gleiches gilt für FTP-Verbindungen, Dateizeiger usw. Das Erstellen einer separaten Ressource pro Thread ist also der richtige Weg. –

Verwandte Themen