Форум: "Начинающим";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];
ВнизКак запустить цикл и не дожидаться его завершения? Найти похожие ветки
← →
Andrey.Ru (2006-10-26 23:33) [0]Доброго времени суток Мастера!
У меня вопрос. Скажем есть кусок кода, типа :
var
Fl : boolean;procedure MeProcedure;
begin
Fl := .......
..............
while Fl do
begin
//Цикл почти бесконечный
end;
......
......
......
end;
Как мне можно запустить подобный цикл не используя потоки
так, чтобы не ждать его завершения, а продолжать выполнять тот который идет ниже?
← →
Kolan © (2006-10-26 23:37) [1]Скажи если ты копаещь яму №1 как тебя заставить выкапать яму №2 не дожидаясь пока ты докапаещь №1?
1. Никак.
2. Не докопав яму №1 ты прейдешь к следующей. АналогBreak;
3. Позвать Васю и вы будите копать вместе. Это доп. поток
← →
Andrey.Ru (2006-10-26 23:39) [2]Спасибо, я так и думал ))
← →
Ketmar © (2006-10-26 23:40) [3]и чего в "основную" полез? щаз запинаем.
← →
Орион © (2006-10-26 23:40) [4]эм... а Application.ProcessMessages?
← →
Leonid Troyanovsky © (2006-10-26 23:47) [5]
> Andrey.Ru (26.10.06 23:33)
> Как мне можно запустить подобный цикл не используя потоки
> так, чтобы не ждать его завершения, а продолжать выполнять
> тот который идет ниже?
Вынести оный цикл в отдельное приложение.
--
Regards, LVT.
← →
Andrey.Ru (2006-10-26 23:58) [6]
> Leonid Troyanovsky © (26.10.06 23:47) [5]
>
> > Andrey.Ru (26.10.06 23:33)
>
> > Как мне можно запустить подобный цикл не используя потоки
> > так, чтобы не ждать его завершения, а продолжать выполнять
>
> > тот который идет ниже?
>
>
> Вынести оный цикл в отдельное приложение.
>
> --
> Regards, LVT.
Дело в том что данный цик это собственно сердце монго приложения, дык вот мне надо зделать так чтобы он какбы отдельно запускался..
var
Fl : boolean;
ThwID, th : cardinal;
procedure MeWhile; stdcall;
begin
while Fl do
begin
//Мой цикл
end;
end;
procedure MeProcedure;
begin
Fl := .......
..............
ThwID := BeginThread(nil, 1024, @MeWhile, nil, 0, th);
......
......
......
end;
Так пробывал, не катит чето... (( Поэтому и спросил как без потока зделать.
← →
Kolan © (2006-10-26 23:58) [7]> Application.ProcessMessages?
Ну и что будет? Человек с лопатой будет еще и рисовать картину Репина "приплыли" вместо перекура :)
← →
Kolan © (2006-10-26 23:59) [8]> Так пробывал, не катит чето...
Изучи класс TThread. Читай Тексейра и Пачеко.
← →
Andrey.Ru (2006-10-27 00:03) [9]
> Kolan © (26.10.06 23:59) [8]
> > Так пробывал, не катит чето...
>
> Изучи класс TThread. Читай Тексейра и Пачеко.
С классом TThread я знаком... Какая разница как я поток запускаю, так просто проще чем класс описывать и плодить еще строки текста..
← →
Ketmar © (2006-10-27 00:10) [10]вот блин. я уже написал язвительный пост, а ветку уволокли в "начинающим"... %-(
← →
Anatoly Podgoretsky © (2006-10-27 00:10) [11]Просто, типовая конструкция такая:
for I := a to b do
for J := c to d // не дожидаемся окончания цикла I
← →
Leonid Troyanovsky © (2006-10-27 00:13) [12]
> Andrey.Ru (27.10.06 00:03) [9]
> запускаю, так просто проще чем класс описывать и плодить
> еще строки текста..
RTFM: Delphi help. TThreadFunc type
--
Regards, LVT.
← →
Andrey.Ru (2006-10-27 00:17) [13]
> Anatoly Podgoretsky © (27.10.06 00:10) [11]
> Просто, типовая конструкция такая:
>
> for I := a to b do
> for J := c to d // не дожидаемся окончания цикла I
Это ты о чем? Ты походу не понял. У меня цикл 1, и его нужно стартануть, а потом сразуже выполнять все остальное.
← →
Anatoly Podgoretsky © (2006-10-27 00:26) [14]Зачем же тогда спрашиваешь
> Как запустить цикл и не дожидаться его завершения?
Что ты хочешь, сформулируй вопрос, я лично запустил не дожидаясь его завершения.
← →
MsGuns © (2006-10-27 00:34) [15]>Andrey.Ru (27.10.06 00:17) [13]
>У меня цикл 1, и его нужно стартануть, а потом сразуже выполнять все остальное.
Короче, начать, не дожидаясь конца цикла ? ;)
Это можно, конечно, но есть некоторые осложнения ;)))
← →
ЮЮ © (2006-10-27 03:07) [16]
> У меня цикл 1, и его нужно стартануть, а потом сразуже выполнять
> все остальное.
Это что самоцель - стартануть цикл 1? Почему не выполнять то что в цикле1 дальше - в коде, который ты и хочешь выполнять? Например:doA := true;
doB := true;
while doA or doB do begin
if doA then ...
if doB then ..
end;
← →
StriderMan © (2006-10-27 11:05) [17]эээ может таймером можно все решить?
← →
Krants (2006-10-27 12:52) [18]Если сами процедуры в цикле не очень матерые можно так:
...
while Fl do
begin
//Цикл почти бесконечный
...
if not MyProcedureBool then //"not run"
MyProcedure;
Application.ProcessMessages;
end;
Ну разумеется будет работать если MyProcedure имеет свой цикл в который также можно впихнуть Application.ProcessMessages.
Хотя чем тебя поток не устраивает?!
← →
RASkov (2006-10-27 23:00) [19]> [18] Krants (27.10.06 12:52)
Мне кажется сообщения в [18] здесь вообще не причем.....имхо.
Тогда уж типа так(если с сообщениями):
while Fl do
begin
//Цикл почти бесконечный
...
if not MyProcedureBool then //"not run"
if not run2cikl then begin
SendMessage(Handle,WM_MYUSER,0,0);
Application.ProcessMessages;
end
end;
и в обработчике этого сообщения циклить....вообщем бред какой-то.
И вообще... охота два одновременно работающих цикла... и НЕ охота использовать потоки.... Непонятка. См [17]
← →
Gydvin © (2006-10-27 23:08) [20]можно запустить конечно два цикла с AProcessMessages"сами в каждом, но при обработке второго цикла первый будет останавливаться и ждать завершения второго, а значит отсюда вывод - позвать Петю
← →
RASkov (2006-10-28 01:33) [21]а лучше не нужно... а если еще и UI есть....
← →
C@N © (2006-10-28 18:53) [22]Timer.... собственный захотел написать.... )))) вперед ))))
← →
DiamondShark © (2006-10-28 20:50) [23]
> Дело в том что данный цик это собственно сердце монго приложения
У приложений (обычно) уже есть такое сердце -- цикл выборки сообщений.
Сильно подозреваю, что можно использовать его, например, обрабатывая Application.OnIdle
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.042 c