Показать сообщение отдельно
  #2  
Старый 22.04.2015, 21:49
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

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