Hallo,
ich habe ein seltsames Problem das mich schon viel Zeit gekostet hat:
Auf meinem Hauptformular habe ich eine Routine die beim Empfang von Daten über Netzwerk ausgelöst wird. In dieser Routine werden dann die Daten über eine Tabellen-Komponente in eine Datenbank gespeichert - etwa so:
Delphi-Quellcode:
//Neuen Datensatz einfügen
TdbTable[ClientID].Append;
//Datensatz mit Daten füllen
for I := 1 to (Datalength) do
begin
TdbTable[ClientID].Fields[i].Value := Data[i];
end;
//Datensatz in Datenbank speichern
TdbTable[ClientID].Post;
//Hinweis: TdbTable ist dabei ein Array von mehreren Tabellen-komponenten
Also ich schreibe meine Empfangenen Daten einfach in eine Tabelle, welche mit einer TurboDB-Datenbank verknüpft ist, und Poste diese dann.
Während all dies geschieht kann man ein anderes Formular (Monitor) aufrufen, das den Inhalt der Datenbank anzeigt. Dieses "Monitor"-Formular verfügt über ein DBGrid und eine Datasource-Komponente. Diese Datasource-Komponente ist direkt mit der obigen Tabelle verknüpft:
Delphi-Quellcode:
//Dem Datasource auf dem "Monitor"-Formular die Tabelle von oben zuweisen
DataSource1.DataSet := UnitMain.TdbTable[ClientID];
Mein Problem:
Es werden permanent Daten empfangen und gepostet. Wenn ich jetzt die Monitor-Form aufrufe sehe ich, dass das DBGrid ständig mit den neu erhaltenen Daten gefüllt wird. Allerdings kommt es öfters mal vor, dass beim Aufruf der Monitor-Form das DBGrid sich nicht aktualisiert und das Hauptformular im Hintergrund dann seinen Dienst einstellt (verarbeitet nicht mehr die empfangenen Daten). Das passiert besonderst wenn sehr viele Daten/Sekunde ankommen.
Ich wär für jeden Tipp sehr dankbar!