Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by Aviator,
2. Apr 2018
Ja das kann natürlich sein.
Allerdings hat der TE nirgends seine Delphi Version vermerkt (weder im Profil, noch im ersten Post). Und die Meldung vom VST, dass Aktionen im MainThread ausgeführt werden sollen, ist soweit ich weiß erst seit ein paar Versionen drin. Und seit ein paar Versionen wird auch nur noch bis XE3 unterstützt. Und ich behaupte jetzt mal, dass dieser Fehler in XE3 nicht mehr...
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by Aviator,
2. Apr 2018
Doch genau das ist das Problem. Das Event wird gefeuert, befindet sich aber noch im Kontext des Threads. Mach mal ein Synchronize() um den Aufruf des Events und schon läuft das. Eventuell brauchst du eine kleine Helper Methode die du dann mit Synchronize() aufrufst sofern dein Event Parameter enthält.
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by Aviator,
2. Apr 2018
Du schreibst, dass du die Daten erst dem VST zuführst wenn der Thread beendet ist. Woher weißt du denn das der Thread beendet ist?
Prüfst du in einem Timer irgendwie ob die Thread Ausführung abgeschlossen ist? Oder lässt du dir ein Event aus dem Thread feuern?
Warum sollte Synchronize() zu Deadlocks führen? Es ist gerade dazu da, um einen Thread mit dem Mainthread zu synchronisieren und...
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by Aviator,
2. Apr 2018
Kommt die Meldung denn schon beim Erzeugen des Frames oder erst wenn du danach die Daten einfügen willst?
Falls es doch erst beim Einfügen der Daten kommt, musst du natürlich Synchronize() verwenden wenn du die Daten nicht im MainThread abrufst. Neuerdings (?) hat der VST eine solche Meldung eingebaut. Ich habe diese Meldung auch vor 3 Wochen gesehen als ich ein Synchronize() vergessen hatte....