![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Добрый день. Есть код:
Код:
var
Main: TMain;
gFlag:Boolean;
implementation
..............
procedure TMain.Button1Click(Sender: TObject);
(* 25.04.13 Поцедура, время работы 20...30 сек*)
procedure TotalLoader(Str:string);
begin
gFlag:=False;
(*много всякого*)
gFlag:=True; (*в конце работы устанвливает флаг*)
end;
(*-------------------------------------------*)
var I:integer; StrRequest,FullListOfRequest:string;
begin
if (Memo1.Lines.Count > 0) then
begin
for I := 0 to Memo1.Lines.Count-1 do
begin
StrRequest:=Memo1.Lines[i];
TotalLoader(StrRequest); (*вызов асинхронной процедуры*)
// нужно преостановить выполнение цикла пока не отработает TotalLoader
// и не установит gFlag:=True;
end;
end
else ShowMessage('Enter Search Request!');
end;Вопрос: есть ли возможность(как?) управлять работой цикла, или надо как то по другому? |
|
#2
|
||||
|
||||
|
Что значит "управлять"? Если вырубить раньше срока - (@i)^ := Memo1.Lines.Count.
Однако вообще-то по-хорошему в таких случаях юзают цикл while. Потому что арифметический цикл по определению - цикл с заранее известным количеством итераций. В противном случае это уже извращение и запутывание кода. Последний раз редактировалось Bargest, 26.04.2013 в 22:23. |
|
#3
|
|||
|
|||
|
там же написано: приостановить.....
|
|
#4
|
||||
|
||||
|
Если нужно приостановить, выноси код с циклом в таймер (только должен быть уже не цикл) и останавливай когда нужно.
|
|
#5
|
||||
|
||||
|
В асинхронной функции по завершению поставить событие, в цикле сделать WaitForSingleObject.
Если имеется в виду дождаться завершения асинхронной функции. Последний раз редактировалось Bargest, 26.04.2013 в 22:35. |
|
#6
|
|||
|
|||
|
Цитата:
на что это похоже? типа Sleep? |
|
#7
|
||||
|
||||
|
А нафик тогда вообще нужна асинхронная процедура, если вы тупо ждете ее завешения?
|
| Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение: | ||
Bargest (26.04.2013)
| ||