Selber hab ich mich bisher sehr erfolgreich um Threads herumgemogelt, hab also nur wenig Erfahrung mit Synchronisieren.
Das dürfte aber in etwa so aussehen:
Delphi-Quellcode:
While True do Begin
Sleep(1);
{Zugriff für andere Threads auf das Canvas sperren, auch für den Haupttread}
Form1.Canvas.Lock;
{auf Canvas zeichnen}
Form1.Canvas.Pixels[Random(Form1.ClientWidth), Random(Form1.ClientHeight)] := clRed;
{Zugriff wieder freigeben}
Form1.Canvas.UnLock;
End;
Das geht natürlich nicht, der Hauptthread braucht ja auch ab und zu mal die Zugrifsrechte:
Delphi-Quellcode:
{Zugriff für andere Threads auf das Canvas sperren, auch für den Haupttread}
Form1.Canvas.Lock;
While True do Begin
Sleep(1);
{auf Canvas zeichnen}
Form1.Canvas.Pixels[Random(Form1.ClientWidth), Random(Form1.ClientHeight)] := clRed;
End;
{Zugriff wieder freigeben}
Form1.Canvas.UnLock;