Hallo,
ich möchte komplex berechnete Daten grafisch in einer TPaintbox (o.ä.) im Hauptformular anzeigen. Die Daten werden in einem eigenen Thread berechnet, schon, damit die Menüs ansprechbar sind. 
Im Thread schreibe ich die berechneten Daten in einen  Puffer. Mein Problem: Wenn der Puffer voll ist, dann soll der Thread warten, so dass das Hauptprogramm Zeit hat, den Puffer zu leeren. Ich wollte das mit einer Message lösen (s. u.), aber bleibe bei der Schleife  "application.processmessages" in einer Dauberschleife hängen. Wahrscheinlich bewirkt processmessages keinen Thread-Wechsel, wein keine Messages da sind, auch durchaus logisch. Aber warum gehen dann Clicks im Mainmenue? Wenn der Puffer nie voll läuft, dann geht es. 
Hat jemand eine Erklärung? Mit Semaphoren und Mutex würde das Problem sicher lösbar, scheint mir aber mit "Kanonen nach Spatzen geschossen" (Redensart, ich liebe Spatzen!)
Grüße
GuaAck
		                     
             Delphi-Quelltext
                        Delphi-Quelltext                    
           	 										| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 
 | Program Main;TYPE
 Txx=Tclass(TForm);
 PROCEDURE Leere_Puffer(VAR m: integer); MESSAGE WM_USER + 1;
 END;
 END;
 
 
 Begin
 REPEAT
 while puffer_voll do
 application.processmessages;
 IF Puffer_leer THEN
 postmessage(Form_handle, WM_USER + 1, 0, 0); }
 Fuelle_puffer;
 UNTIL Abbruch;
 end;
 |