Главная страница
    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.44 MB
Время: 0.004 c
4-1245172423
Дмитрий
2009-06-16 21:13
2011.02.06
Как создать консольную форму


2-1290146683
Phoenix
2010-11-19 09:04
2011.02.06
TOraTable и Blob


15-1287692941
Юрий
2010-10-22 00:29
2011.02.06
С днем рождения ! 22 октября 2010 пятница


15-1287856169
Кто б сомневался
2010-10-23 21:49
2011.02.06
Помогите перевести


8-1210184448
Nizam
2008-05-07 22:20
2011.02.06
TrackBar





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский