Здравствуйте! Даже не знаю, как описать... Проблема смешная, но очень непонятная, но вдруг кто сталкивался...
В общем, есть некий Thread, который останавливается, как только ProgressBar достигнет максимума.
Код:
1 2 3 4 5 6 7 8 9 10 | rocedure TForm1 . cloudTimerTimer(Sender: TObject);
begin
if cloudProgr . Position>=cloudProgr . Max then
begin
cloudTimer . Enabled:= false ;
cloudProgr . Visible:= false ;
CloudThread . Terminate;
CloudProcBut . Visible:= false ;
end ;
cloudProgr . StepIt;
|
Всё работает замечательно. Но вдруг пользователь передумал и решил досрочно прервать процесс. Для этого предусмотрена кнопка, которая прогрессбару сразу присваивает максимум, тогда описанное выше событие сразу прервет тред.
Код:
1 2 3 4 | procedure TForm1 . CloudProcButClick(Sender: TObject);
begin
cloudProgr . Position:=cloudProgr . Max;
end ;
|
Но происходит невероятное - на строке CloudThread.Terminate; происходит ошибка. То есть, если прогрессбар сам достиг максимума - то нормально, а если ему помогли - то нет. Если CloudThread.Terminate включить по нажатию кнопки - тоже ошибка. Сам Thread почти ничего не делает. Как такое может быть?