Ich nutze DREI Speicherstrukturen. Zwei sind "identisch" und meißt statisch, in eines dieser lese ich die Daten ein, nach einem bestimmten Zeitintervall (Millisekunden,Sekunden,Minuten-> hängt vom Programm ab) wechsele ich auf den zweiten Speicher und der erste kann so ausgelesen werden. Dann kopiere ich diese Daten in den Dritten rein. Ich nutze also zwei Buffer und einen "Hauptspeicher". Beim "umkopieren" ist dann nur wichtig, das dies nicht in einem Rutsch geschieht, sondern Stückweise, damit das auslesen der Daten nicht stoppt. Hierzu würde sich ein zweiter Thread anbieten, was aber nicht unbedingt sein muß.
Eine Million Datensätze sind ja gar nicht so viel. Wenn die Daten in ein Long oder gar nur Word oder Byte geschrieben werden, kommt das nicht viel zusammen, selbst wenn man X und Y-Werte speichert. Ein paar Megabyte RAM auf 20h sind ja extrem wenig. So ein Programm bekommt man wohl auch einem 100Mhz-Rechner problemlos zum laufen

Lege also beispielweise zwei Arrays an, jeweils mit z.B. 10.000 Elementen und dann einer Variable welche die genutzte Anzahl zählt. Sind alle Elemente gefüllt, wird der zweite Array benutzt und der erste kann umkopiert werden. Die aktuellen Daten aus dem gerade zum schreiben genutzten Buffer kann man natürlich auch nutzen um sie in eine aktuelle Anzeige auszugeben. Aber wie man das macht, bleibt jedem überlassen.