Здравствуйте, Begemote, Вы писали:
B>Всё на самом деле так и построено- главный поток запускает поток вычислительный, с которым B>засинхронизирован (потому что используют общие объекты VCL) B>И из-за этой синхронизации главный не отвечает на клаву. Поэтому B>я решил создать ещё один поток, в который перенаправить клавиатурный ввод главного потока B>и там ловить нажатие ESC. Но, увы, всё не так просто оказалось...
Какой смысл тогда было делать дополнительный поток, если он замораживает основной? Постарайся делать меньше синхронизаций с основным потоком. Делай так, чтобы каждый занимался своим делом — главный с компонентами, а фоновый с каким-нибудь промежуточным хранилищем. Прячь компоненты, которые требуют долгого заполнения, чтобы они себя не перерисовывали итд.