Burkhard
Level-2
- Beiträge
- 161
- Reaktionspunkte
- 2
-> Hier kostenlos registrieren
Hallo Freunde der Hochsprachenprogrammierung.
Ich habe mit der DotNetSiemensPLCToolBoxLibrary eine Applikation entwickelt, mit der ich Daten aus der Siemens S7-SPS lesen, die aktuellen Werte anzeigen und in Dateien abspeichern kann.
Ich moechte nun waehrend die Erfassung laeuft, die die Werte in einem DataGridView anzeigen. Ich stelle mir das so vor, dass sich das GridView dann kontinuierlich mit Zeilen fuellt.
In einem Background-Thread werden die Werte von der S7 gelesen und in eine DataTable geschrieben. Alle 30 Millisekunden faellt eine neue Zeile in der DataTable an. Sehr schnell habe ich an die 100.000 Zeilen in der Tabelle.
Im GUI-Thread habe ich ein DataGridView mit Binding-Source an diese DataTable verbunden.
Im Debugger laeuft das ganze irgendwie. Aber wenn ich die Exe ohne Debugger starte, dann friert das Programm manchmal ein. Ich habe ein wenig experimentiert und eine Exe erzeugt die ohne Einfrieren laeuft, aber wenn ich dann weitere Aenderungen am Programm durchfuehre, habe ich wieder Probleme.
Ich bin auf der Suche nach einem grundsaetzlichen Hinweis, wie man bei solchen Problemstellungen vorgeht, denn ich glaube ich habe hier ein grundsaetzliches Architektur-Problem in der Herangehensweise.
Wie werde grosse Datenmengen, die in einem Background-Thread anfallen am besten gespeichert. Ist die DataTable hier das richtige Instrument? Wie Zeige ich diese Daten dann am besten im UI-Thread an?
Ich habe mit der DotNetSiemensPLCToolBoxLibrary eine Applikation entwickelt, mit der ich Daten aus der Siemens S7-SPS lesen, die aktuellen Werte anzeigen und in Dateien abspeichern kann.
Ich moechte nun waehrend die Erfassung laeuft, die die Werte in einem DataGridView anzeigen. Ich stelle mir das so vor, dass sich das GridView dann kontinuierlich mit Zeilen fuellt.
In einem Background-Thread werden die Werte von der S7 gelesen und in eine DataTable geschrieben. Alle 30 Millisekunden faellt eine neue Zeile in der DataTable an. Sehr schnell habe ich an die 100.000 Zeilen in der Tabelle.
Im GUI-Thread habe ich ein DataGridView mit Binding-Source an diese DataTable verbunden.
Im Debugger laeuft das ganze irgendwie. Aber wenn ich die Exe ohne Debugger starte, dann friert das Programm manchmal ein. Ich habe ein wenig experimentiert und eine Exe erzeugt die ohne Einfrieren laeuft, aber wenn ich dann weitere Aenderungen am Programm durchfuehre, habe ich wieder Probleme.
Ich bin auf der Suche nach einem grundsaetzlichen Hinweis, wie man bei solchen Problemstellungen vorgeht, denn ich glaube ich habe hier ein grundsaetzliches Architektur-Problem in der Herangehensweise.
Wie werde grosse Datenmengen, die in einem Background-Thread anfallen am besten gespeichert. Ist die DataTable hier das richtige Instrument? Wie Zeige ich diese Daten dann am besten im UI-Thread an?