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

Вниз

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

 
asd   (2010-11-15 23:20) [0]

Здравствуйте. Работаю с потоками.

 TMyClass = class (TThread)
 public
   constructor Create(i: integer); reintroduce;
   destructor Destroy(); override;
   procedure Execute(); override;
 end;
{ TMyClass }

constructor TMyClass.Create(i: integer);
begin
 inherited Create(true);
 FreeOnTerminate := true;
end;

destructor TMyClass.Destroy;
begin
 Form1.Memo1.Lines.Add("sss");
 inherited;
end;

procedure TMyClass.Execute;
var
 i: integer;
begin
 i := 0;
 while i < 1000 do begin
   inc(i);
 end;
 Form1.Memo1.Lines.Add("Terminate");
 Terminate();
end;


Далее я создаю поток и запускаю его

procedure TForm1.Button1Click(Sender: TObject);
var
 cl: TMyClass;
begin
 cl := TMyClass.Create(5);
 cl.Execute();
end;


Проблема в том что после отработки метода Execute() поток не освобождается. Мне нужно чтобы поток сам уничтожался после отработки Execute. Как этого добится?


 
Юрий Зотов ©   (2010-11-15 23:30) [1]

Из Execute уберите 2 строки:
Form1.Memo1.Lines.Add("Terminate");
Terminate();


Из деструктора уберите 1 строку:
Form1.Memo1.Lines.Add("sss")

Процедуру запуска перепишите:
procedure TForm1.Button1Click(Sender: TObject);
begin
 TMyClass.Create(5).Resume
end;


Потом поставьте в деструкторе точку останова, запустите программу и убедитесь, что все работает.

Потом читайте справку по классу TThread. Много нового найдете.


 
Amoeba_   (2010-11-15 23:33) [2]

Смотрим на этот код (то, где первая ошибка):

> procedure TMyClass.Execute;
> var
>  i: integer;
> begin
>  i := 0;
>  while i < 1000 do begin
>    inc(i);
>  end;
> Form1.Memo1.Lines.Add("Terminate");
>
Terminate();
> end;

Читал, что было Delphi написано в модуле потока? Придется процитировать:
Methods and properties of objects in visual components can only be used in a method called using Synchronize.

А теперь срочно читать эту статью до полного просветления:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1370



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

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

Наверх




Память: 0.47 MB
Время: 0.01 c
3-1252504146
Dolphin
2009-09-09 17:49
2011.02.06
Восстановить БД - BLOB has been modified


3-1251976429
kyn66
2009-09-03 15:13
2011.02.06
После обновления компонентов ADS - ошибка


3-1252485463
Xmen
2009-09-09 12:37
2011.02.06
Unable to determine field names


2-1290065729
DoKZ
2010-11-18 10:35
2011.02.06
Indy TCP Client Server (Delphi 7)


11-1229774206
mtx
2008-12-20 14:56
2011.02.06
Акселератор меню (без MCK)