Ja, mein "echter" Code sieht leicht anders aus (d.h. leicht komplexer). Dieser Beispiel-Code ist einfacher, d.h. es wird immer nur ein Sub-Worker gestartet. Bei meinem echten Code werden mehrer Sub-Worker gleichzeitig gestartet. Die Anzahl der gleichzeitigen Sub-Worker bestimmt sich durch die CPU Cores. Immer wenn sich ein Sub-Worker mit dem Ergebnis zurück meldet, wird dann danach überprüft, ob es noch offene task gibt. Offene Task = task der gerade noch läuft oder task der noch nicht gestartet wurde.
Ergänzung: Wenn es keine offenen Task mehr gibt, sendet der Main Worker das Ergebnis zurück an den Main Thread.
Aber der Beispielcode reicht aus, um das Problem zu verdeutlichen. Das Prblem tritt scheinbar nicht mehr auf, wenn ich die Sub Worker an eine globale Variable im Main Worker binde.