Dann gebe ich dem Thread die
DB Info´s mit und er macht eine extra Connection auf... (Szenario 1).
Gestalte das ganze doch noch etwas abstrakter: Warum bittest du nicht einen "
DB-Manager" um eine
Query und arbeitest dann mit dieser?! Beim Start der Anwendung musst du dem
DB-Manager lediglich einmal die Connection-Informationen übergeben und gut ist das. Hast du Verbindungen zu mehreren DBs, so kannst du auch sowas machen
DbManager.GetQuery('oracle');
und
DbManager.GetQuery('access');
.
In dieser GetQuery()-Methode wird dann automatisch geprüft, welcher Thread aufgerufen wird. Ist für den Thread noch keine Verbindung aktiv, so wird eine neue aufgebaut und die
Query in diesem Kontext erzeugt.
Zudem würde ich das ganze dann auch noch mit Interfaces verknüpfen, was dazu führt, dass du dich weniger um die Speicherverwaltung kümmern musst. Ebenso abstrahierst du dann auch von der genutzten Datenbank und bietest deinem Programm eine einheitliche Schnittstelle für den
DB-Zugriff an.
Leider ist das ganze bisher nur in meinem Kopf und noch nicht ganz umgesetzt
Bin aber auf dem besten Weg gerade...
welche Lösung wäre akzeptabel ?
Du weißt doch von vorn herein, was genau du updaten musst, oder? Dann packe das ganze doch in einen einzigen Thread und Transaktion und gut ist. Wie lange können solche Updates denn eigentlich dauern?! oO
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)