Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.02.04;
Скачать: CL | DM;

Вниз

Работа с потоками   Найти похожие ветки 

 
Antoniz   (2002-01-16 10:00) [0]

Подскажите как сделать, чтобы приложение не ожидало конца выполнения процесса в потоке типа TThread, работающем в этом же приложении


 
Velocity   (2002-01-16 10:48) [1]

Странно... Вроде и не должно ожидать, для этого собссно потоки и выдуманы... Лучше кусок кода кинь, погляжу, может чего то я недопонял.


 
Digitman   (2002-01-16 10:50) [2]

Что означает - "не ожидало конца выполнения ..." ? Какая причина заставляет твое приложение ждать завершения доп.потока в дан.момент ?


 
McSimm   (2002-01-16 10:59) [3]

Наверное при выходе из программы?

В цикле выполнения потока должна быть проверка
if Terminated then Exit;
или что-то в этом роде


 
Velocity   (2002-01-16 11:06) [4]

Фу ема е. CreateThread возвращает идентификатор потока, который в дальнейшем можно использовать чтобы досрочно грохнуть этот самый поток. вот функцию которая это делает извиняюсь не помню, ломы смотреть. что то типа ExitThread... кажется.


 
Antoniz   (2002-01-16 11:08) [5]

Вот мой код

constructor TMyThread.Create;
begin
Inherited Create(true);
Priority:=tpHigher;
FreeOnTerminate:=true;
Resume;
end;

destructor TMyThread.Destroy;
begin
Free;
Inherited;
end;

procedure TMyThread.Cr;
begin
Screen.Cursor:=crHourGlass;
CreateStructure; //Моя процедура
Screen.Cursor:=crDefault;
end;

procedure TMyThread.Execute;
begin
synchronize(Cr);
Suspend;
end;

//Далее нажимаем на кнопку
procedure TfrmDepartaments.cmdAddClick(Sender: TObject);
begin
Application.CreateForm(TfrmProgress,frmProgress);
Progress.DoingTime:=10000;
frmProgress.Show;
frmProgress.Repaint;
timer1.Enabled:=true;
TMyThread.Create;
TMyThread.MethodName(@TMyThread.Execute);
timer1.Enabled:=false;
frmProgress.Close;
end;

Так вот пока поток выполняется таймер не работает, а нужно чтоб время счелкал


 
Алексей Петров   (2002-01-16 11:23) [6]

А поток у тебя и не выполняется :)
Он только посылает основному потоку сообщение "Выполни Cr" и ждет результата ...

Смотри функцию synchronize в исходниках.


 
Digitman   (2002-01-16 12:10) [7]

А вот это :

TMyThread.MethodName(@TMyThread.Execute);

зачем ?


 
NailS   (2002-01-16 12:24) [8]

А в деструкторе TMyThread у вас метод Free для какого объекта вызывается?



Страницы: 1 вся ветка

Текущий архив: 2002.02.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.01 c
3-8772
Andr
2002-01-05 19:06
2002.02.04
DBImage


1-8871
Stror
2002-01-13 12:16
2002.02.04
WebBrowser


1-8817
DJ X
2002-01-19 15:52
2002.02.04
Web браузер


1-8923
Valdemar
2002-01-16 12:36
2002.02.04
Как оставить приложение без окна выполнятся до окончания работы Windows?


7-9016
Trot
2001-10-12 06:47
2002.02.04
Перехват обращения к LPT!