Показать сообщение отдельно
  #17  
Старый 14.05.2012, 20:27
EL190 EL190 вне форума
Новичок
 
Регистрация: 23.04.2012
Сообщения: 50
Репутация: 159
По умолчанию

не могу понять как при методе Queue становятся в очередь?
я сделал пример
Цитата:
procedure TMyThread.Execute;
var i:integer;
begin

for i:=1 to 10000 do
begin
n:=i;
Queue(UpdateCaption);

end;
showmessage('конец');
end;

Цитата:
procedure TMyThread.UpdateCaption;
begin
Form1.UpdateCaption(n);
end;

Цитата:
procedure TForm1.UpdateCaption(i:integer);
begin
showmessage('прогрессбар');
form1.ProgressBar1.Position:=i;
end;

выскакивает showmessage('прогрессбар') я на ОК не нажимаю

выскакивает showmessage('конец');

Вроде все правильно работает поток не ждет завершения TMyThread.UpdateCaption
но после того как поток завершился если нажать на ОК showmessage('прогрессбар')

то progressbar сразу становится в конец (position 10000)

По идее showmessage('прогрессбар') должен был выскачить 10000 раз и при каждом нажатии ОК position долна быть на 1 больше в чем проблема ???????????
Такое чувство что последний кто встал в очередь проходит первый, но даже при таком прогрессбар должен стать в 10000 а потом уменьшаться а он просто становится в посл позицию и стоит а showmessage('прогрессбар') выскакивает 10000 раз
Ответить с цитированием