Delphi-Quellcode:
// geht bei mir gnadenlos in die Hose... (ListBox füllt sich nicht und Programm scheint in einer Endlodschleife zu hängen)
ListBox1.Items.Clear;
TParallel.For(0, 9,
procedure(i_: Integer)
begin
ListBox1.Items.Add(IntToStr(i_));
end);
Natürlich geht das in die Hose! Ein klassisches Beispiel dafür, daß es so wichtig ist, den tatsächlichen Code zu sehen.
Dir ist doch klar, daß das in einem separaten Thread abläuft, davon mehrere gleichzeitig laufen (zumindest mit halbwegs aktuellen Prozessoren) und die
VCL nicht threadsicher ist? Zugriffe auf
VCL-Objekte aus einem Thread (außer dem Hauptthread) sind mit
Synchronize oder
Queue zu synchronisieren. Dummerweise macht das in deinem Beispiel die gesamten Vorteile der Parallelverarbeitung zunichte.