Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2011.02.06;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.004 c
15-1287773157
Дмитрий Тимохов
2010-10-22 22:45
2011.02.06
Несостоятельное чтение в СУБД на SQL


2-1290080637
noob_one
2010-11-18 14:43
2011.02.06
Как добавить свою строчку в меню, которое появляется по


11-1229077921
sir tictactoe
2008-12-12 13:32
2011.02.06
не получается создать MCK-проект в BDS2006


15-1287779340
Юрий
2010-10-23 00:29
2011.02.06
С днем рождения ! 23 октября 2010 суббота


4-1245172423
Дмитрий
2009-06-16 21:13
2011.02.06
Как создать консольную форму





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский