не могу понять как при методе 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 раз