Threads sind nicht die Lösung für alle Probleme.
Was macht der neue Thread hier? Er wartet (hoffentlich) auf die
DB, um dann synchronisiert auf der Mainform rumzumalen. Super, das gleiche Problem, nur mit einem Thread mehr
Dabei ist das Ganze ein Synchronisierungsproblem, das ich mit einem Zustandsautomat lösen würde:
Eingaben des Automaten:
- queryDB: Anfrage an DB wurde gestartet
- DBfinished: ADO ist fertig
- planRepaint: dein Thread macht das Synchronize
Ausgaben des Automaten:
- doRepaint(): das was du eigentlich machen wolltest
Es wäre mehr als merkwürdig, wenn dir
queryDB und
DBfinished nicht irgendwo mitgeteilt würden (-> Ereignisse). Die Übergänge die nicht eingezeichnet sind, sollten Fehlerfälle sein.
Zwei boolesche Flags würden es auch tun, aber so ist es aussagekräftiger und kann gut um weitere Zustände ergänzt werden.