![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с потоками [D5]
Antoniz © (2002-01-16 10:00:00)Подскажите как сделать, чтобы приложение не ожидало конца выполнения процесса в потоке типа TThread, работающем в этом же приложении
NailS (2002-01-16 12:24:00) [1]А в деструкторе TMyThread у вас метод Free для какого объекта вызывается?
Digitman (2002-01-16 12:10:00) [2]А вот это :
TMyThread.MethodName(@TMyThread.Execute);
зачем ?
Алексей Петров (2002-01-16 11:23:00) [3]А поток у тебя и не выполняется :)
Он только посылает основному потоку сообщение "Выполни Cr" и ждет результата ...
Смотри функцию synchronize в исходниках.
Antoniz (2002-01-16 11:08:00) [4]Вот мой код
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;
Так вот пока поток выполняется таймер не работает, а нужно чтоб время счелкал
Velocity (2002-01-16 11:06:00) [5]Фу ема е. CreateThread возвращает идентификатор потока, который в дальнейшем можно использовать чтобы досрочно грохнуть этот самый поток. вот функцию которая это делает извиняюсь не помню, ломы смотреть. что то типа ExitThread... кажется.
McSimm (2002-01-16 10:59:00) [6]Наверное при выходе из программы?
В цикле выполнения потока должна быть проверка
if Terminated then Exit;
или что-то в этом роде
Digitman (2002-01-16 10:50:00) [7]Что означает - "не ожидало конца выполнения ..." ? Какая причина заставляет твое приложение ждать завершения доп.потока в дан.момент ?
Velocity (2002-01-16 10:48:00) [8]Странно... Вроде и не должно ожидать, для этого собссно потоки и выдуманы... Лучше кусок кода кинь, погляжу, может чего то я недопонял.