Ich habe immer nur den
GUI Thread und evtl. einen Thread der etwas im Hintergrund tut. Gibt es irgend einen Grund warum ich das lieber in Itask.run statt in einem anonymen Thread machen sollte?
Am Ende ist es auch nur eine subjektive Entscheidung. Ich persönlich halte viel von einer möglichst engen Kapselung. Das sieht man bei meinem ersten Ansatz, der lediglich die MyList publiziert und die Interna im implementation unterbringt. Im nächsten Schritt wird dann zumindest der Status oder gleich das Future öffentlich gemacht. Das ist halt notwendig, wenn man mehr Kontrolle zulässt.
Es kommt halt immer drauf an was man alles braucht. ITask bzw. IFuture bieten z.B. auch gleich zwei Wait Overloads, mit denen man auch leicht ein non-freezing Poll implementieren kann. Vieles von dem müsste man bei einem simplen anonymen Thread noch selbst beisteuern. Nicht das das nicht auch möglich wäre.
In einem mittlerweile schon über drei Jahre alten Blog Post beschreibe ich den durchaus etwas längeren Weg von Synchron zu Asynchron:
Async Tasks in VCL Projects. Dort verwende ich ein simples TTask.Run für die asynchrone Ausführung. Ich finde, es gibt schon genug Dinge zu beachten um Multithreading korrekt zu verwenden; da möchte ich den Code so übersichtlich wie möglich halten.