Hmm, you are creating one TProcess and using it to launch multiple processes each in its own thread ?
Are you sure that TProcess is thread safe ? And if it is, my guess is it would be only if you created the TProcess in its thread. Still guessing, is it safe to free that TProcess before all threads have finished ?
Disclaimer - I have not tried any thing like what you are doing.
Davo