мое однопоточное приложение delphi 2009 (еще не совсем законченное) начало испытывать проблемы с приложением Application.ProcessMessages. мое приложение имеет объект TTimer, который запускает каждые 100 мс для опроса внешнего устройства. Я использую Application.ProcessMessages для обновления экрана, когда что-то меняется, поэтому приложение все еще реагирует.Application.ProcessMessages висит?
один из них был в событии OnMouseDown сетки. там, у него были Application.ProcessMessages, которые по существу висели. удаление не было проблемой, за исключением того, что я вскоре обнаружил еще одно приложение Application.ProcessMessages, которое также блокировалось.
Я думаю, что может произойти со мной, так это то, что TTimer - в режиме приложения, который я сейчас отлаживаю - возможно, слишком долго для завершения. я предотвратил правша событий TTimer.OnTimer от повторного ввода и тот же кода (см ниже):
procedure TfrmMeas.tmrCheckTimer(Sender: TObject);
begin
if m_CheckTimerBusy then
exit;
m_CheckTimerBusy:=true;
try
PollForAndShowMeasurements;
finally
m_CheckTimerBusy:=false;
end;
end;
каких мест было бы плохая практика называть Application.ProcessMessages? Подпрограммы OnPaint приходят в голову как нечто, что не имеет смысла.
любые общие рекомендации?
Я удивлен, увидев возникшую проблему на этом этапе разработки!
Почему это CW? Мне кажется, это довольно конкретный и технический вопрос. –
@ Сертак прав. Вам не нужно отмечать вопрос как сообщество wiki, если только A) вы не хотите приглашать пользователей с низким уровнем репутаций для редактирования вашего вопроса, или B) вы задаете очень субъективный вопрос опроса. Нет никакого правила * против * создания ваших вопросов CW, но вы и люди, которые им отвечают, не получат никакой репутации. –
любая причина, по которой вы не рассматриваете возможность вставки потоков в ваше приложение? –