Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.005 c
6-1233683745
Xandr
2009-02-03 20:55
2011.02.06
Почта


15-1287606541
Юрий
2010-10-21 00:29
2011.02.06
С днем рождения ! 21 октября 2010 четверг


2-1290101441
Mitroshin
2010-11-18 20:30
2011.02.06
Старый исходник после компиляции в D2010 (оформление)


6-1233563581
vegarulez
2009-02-02 11:33
2011.02.06
Вопрос про разбор параметров запроса.


4-1244198418
GF
2009-06-05 14:40
2011.02.06
Курсор в определенной области. Отталкивание




   Наверх