Hallo,
ich bin doch soweit, dass ich alle Datasetmanipulationen im Hauptthread durchführen möchte. Ich habe in meinem Programm mehrere Schichten: GUI->Daten->Register->Kommunikation RS485. Kommunikation läuft im Nebenthread, die empfangenen Daten müssen unmittelbar nach Aufbereitung in der GUI angezeigt werden. Zur Zeit ist es so, dass bei der Kommunikation nach Ausführung eine Callback-Methode aufgerufen wird, in dieser werden die Daten teilweise schon direkt ins Dataset eingetragen, dann wird ein Event ausgelöst, welches die Daten in die Datenschicht trägt, da werden sie noch weiterverarbeitet, dann Event in die GUI, da endgültig weiterverarbeitet und die Bindings aktualisiert.
Da die Anwendung immer wieder mal abstürzt, sehe ich mich gezwungen, alles in den Hauptthread zu verlagern, was mit Dataset zu tun hat. Erst dachte ich, ich muss die Daten, die ich sonst in der Register-Schicht direkt reingeschrieben habe (in der Callback-Methode), sammeln, in die GUI über Datenschicht schicken, und da alle eintragen.
Jetzt ist mir aber eine Idee gekommen: ich könnte 2 Callback-Methoden einführen: die erste bringt alle Rohdaten direkt in die GUI und von da wird die zweite Callback-Methode aufgerufen, über Invoke, die dann die Daten im Hauptthread einträgt. Die zweite Methode wäre die, die ich jetzt als erste habe, d.h. ich müsste überhaupt keinen Code anpassen.
Da es zu schön klingt, um wahr zu sein (paar Zeilen Code nur hinzufügen), wollte ich nachfragen, ob ich irgendwo einen Denkfehler habe...
Und btw.: dann bräuchte ich keine ResetBindings() mehr machen, wenn die Daten im Hauptthread eingetragen werden, oder?
ich bin doch soweit, dass ich alle Datasetmanipulationen im Hauptthread durchführen möchte. Ich habe in meinem Programm mehrere Schichten: GUI->Daten->Register->Kommunikation RS485. Kommunikation läuft im Nebenthread, die empfangenen Daten müssen unmittelbar nach Aufbereitung in der GUI angezeigt werden. Zur Zeit ist es so, dass bei der Kommunikation nach Ausführung eine Callback-Methode aufgerufen wird, in dieser werden die Daten teilweise schon direkt ins Dataset eingetragen, dann wird ein Event ausgelöst, welches die Daten in die Datenschicht trägt, da werden sie noch weiterverarbeitet, dann Event in die GUI, da endgültig weiterverarbeitet und die Bindings aktualisiert.
Da die Anwendung immer wieder mal abstürzt, sehe ich mich gezwungen, alles in den Hauptthread zu verlagern, was mit Dataset zu tun hat. Erst dachte ich, ich muss die Daten, die ich sonst in der Register-Schicht direkt reingeschrieben habe (in der Callback-Methode), sammeln, in die GUI über Datenschicht schicken, und da alle eintragen.
Jetzt ist mir aber eine Idee gekommen: ich könnte 2 Callback-Methoden einführen: die erste bringt alle Rohdaten direkt in die GUI und von da wird die zweite Callback-Methode aufgerufen, über Invoke, die dann die Daten im Hauptthread einträgt. Die zweite Methode wäre die, die ich jetzt als erste habe, d.h. ich müsste überhaupt keinen Code anpassen.
Da es zu schön klingt, um wahr zu sein (paar Zeilen Code nur hinzufügen), wollte ich nachfragen, ob ich irgendwo einen Denkfehler habe...
Und btw.: dann bräuchte ich keine ResetBindings() mehr machen, wenn die Daten im Hauptthread eingetragen werden, oder?