См: How to animate a spinner while performing a workload via threadingКак избавиться от лагов при работе с многопоточной
Я работаю с приложением Delphi xe5 для прошивки. Выполняя SQL-запрос, у меня есть функция TAniIndicator. Я использую потоки - для конкретного кода, см. Статью, указанную выше.
Все работает, однако, при использовании кода, которому мне помогли в предыдущем вопросе, я заметил добавленную задержку. Когда бежал под отладчиком, приложение зависает между строк:
Thread.DoTerminate;
Thread.FFinished := True;
под ThreadProc Функция System.Classes блока
Любой ключ, как, почему? Или что я могу сделать, чтобы предотвратить добавленное 5-секундное отставание? Спасибо
Update ответ TLama:
procedure TForm_Login.WorkIsDone(Sender : TObject);
begin
Form_Login.LoadSpinnerFrame.visible := False;
Form_Login.LoadSpinner.Visible := False;
Form_Login.LoadSpinner.Enabled := False;
Form_Login.btnLogin.Text := 'Logout';
Form_Login.btnLogin.Enabled := True;
if GoodLogin = 1 then
Main_Form.show;
end;
Мой OnTerminate() связан с описанной выше процедуре.
У вас есть какой-либо код в методе 'OnTerminate' вашего потока? – TLama
Вопрос Обновлено, Спасибо – ThisGuy
Вы уверены, что вы выбрали этот «Сон (5000)»? –