Habe doch noch was in der Hilfe gefunden, vielleicht hilft es ja noch jemandem. dbExpress ist nur dann thread-safe, wenn auch die Treiber-Bibliothek thread-safe ist. Bei
MySQL muss man sich dann u. U. ein entsprechendes Binary besorgen, da man es optional als thread-safe kompilieren kann (ob die
MySQL DLLs standardmäßig thread-safe sind kann ich aber nicht sagen). Bei
MSSQL gilt: Vorher coinitialize() in jedem Thread aufrufen wie es
hier beschrieben ist.
Hier der Auszug aus der
CodeGear Online-Hilfe:
Zitat:
Datenzugriffskomponente
Datenzugriffskomponenten sind in folgender Hinsicht thread-sicher: Bei
BDE-gestützten Datenmengen muss jeder Thread über seine eigene Sitzungskomponente verfügen. Die einzige Ausnahme stellen Microsoft-
Access-Treiber dar, die eine Microsoft-Bibliothek verwenden, die nicht thread-sicher ist. Für dbExpress gilt: Solange die Client-Bibliothek thread-sicher ist, sind dies auch die dbExpress-Komponenten.
ADO- und InterBaseExpress-Komponenten sind thread-sicher.
Auch bei der Verwendung von Datenzugriffskomponenten müssen alle Aufrufe, die sich auf datensensitive Steuerelemente beziehen, in der Methode Synchronize gekapselt werden. Beispielsweise müssen alle Aufrufe gekapselt werden, die ein Datensteuerelement über die Eigenschaft DataSet der Datenquelle mit einer Datenmenge verknüpfen. Dagegen braucht der Zugriff auf die Daten in einem Feld der Datenmenge nicht gekapselt zu werden.
Weitere Informationen zu Datenbanksitzungen im Zusammenspiel mit Threads in
BDE-gestützten Anwendungen finden Sie unter Mehrere Sitzungen verwalten.