Critical Sections wären das falsche Werkzeug.
Du benötigst Events.
1.) du erstellt ein Objekt der Klasse
TEvent auf dem Hauptformular (oder sonstwie global)
Diese Objekt "lebt" also länger als die beiden Threads
FEvent := TEvent.Create(nil, True, False, 'MeinEvent5641');
2.) Dein 1. Thread setzt das Event, wenn Daten vorhanden
...Event.SetEvent;
3.) Dein visualisierung Thread wartet auf das Event:
Delphi-Quellcode:
procedure TVisThread.Execute
var
wr : TWaitResult;
begin
while not Terminated do
begin
// immer nur max. 2 sek warten, damit der Thread nicht ewig hängt
wr := ...Event.Waitfor(2000);
if wr = wrSignaled then
begin
...Event.ResetEvent;
// hier Daten entgegennehmen und anzeigen
end;
end;
end;