You have captured the variable. But you need to capture the value. Capturing the value is not supported directly so you need to fake that by making a copy of the variable into a new value, one per task.
More detail here
http://docwiki.embarcadero.com/RADStudio/en/Anonymous_Methods_in_Delphi
https://stackoverflow.com/a/24223683/505088