Показать сообщение отдельно
  #4  
Старый 02.05.2018, 07:13
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 663
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

Цитата:
Сообщение от nixon232
В первых вариантах был слип, но он мне фризил интерфейс основной формы, этот вариант мне помог.
Если дополнительный поток вызывает подвисание основного, значит что-то Вы делаете неверно. А именно программа не попадает в цикл обработки сообщений. Что Вы решили добавлением Application.ProcessMessage. Т.е. деления на потоки у Вас и не получилось.

Цитата:
Сообщение от nixon232
Потом, я нашел причину фризов, а возвращать слип как-то не стал. Это может быть как-то связано с проблемой?
Сложно сказать. Поставьте брейк и посмотрите откуда ноги растут. Хотя если бы мне нужна была пауза в потоке, и ничего кроме неё, Sleep вполне оправдан (это позволяет притормозить вызвавший поток и дать время на отработку остальных, что и должно предотвращать зависание).

Как итог, по Вашему куску кода можно сказать, что вся процедура WaitMe легко заменяется на Sleep. Ну а если пауза значительная и может повлиять на завершение программы (например пауза в 10 секунд не даст завершиться программе, пока доп поток не отработает), то можно сделать как мы с Вами обсуждали в прошлой теме - WaitForMultiplyObjects и ожидать либо таймер, либо событие завершения потока.
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.
Ответить с цитированием