Во-первых, можно обойтись и без рекурсии простым циклом без особого усложнения кода. Например, пройтись по массиву от последнего элемента к первому и обработать каждый стринглист.
Во-вторых, есть метод TThread.Suspend для паузы. Хотя лучше конечно поток не на паузу поставить, а поставить ему флажок и подождать, а сам поток периодически проверяет флаг, и если его поставили - прекращает сортировку и вырубается, сохранив где-нибудь номер, где остановился.
Ну а сохранение в файл - проходишь по всем стринглистам, сейвишь их, потом сохраняешь номер текущего обрабатываемого. С циклом это будет сделать в пару сотен раз проще, чем с рекурсией. Потому что для рекурсии придется еще сохранять состояние стека этого потока и адрес команды, и соответственно загружать.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
|