Ох ты ж елки...
Естесвенно, не работает.
Либо ты делаешь ограничение на доступ к IdHTTP из потока (см. CriticalSection), либо у каждого потока надо создать свой экземпляр IdHTTP.
Да и вообще, если просто хочешь обрабатывать список в несколько потоков, надо менять внутреннюю архитектуру приложения.
Кратко:
1. Основной поток создает очередь заданий, пул потоков (не рекомендую создавать больше 10 для начала), запускает потоки и ждет пока они все не обработают (тут есть варианты реализации, в зависимости от того, что хочется).
2. Поток смотрит в очередь (CriticalSection), если там есть задание, то берет одно и начинает его выполнять, по результату отправляет сообщение в основной поток (опять CriticalSection или использовать виндовые сообщения). Если заданий нет, то либо засыпает на какое-то время, либо "умирает" (зависит от реализации хотелок).
3. Основной поток при получении сообщения от потока выводит результат пользователю.
|