Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Убивает ли поток породивший его процесс? Наверное ликбез 
V
    Опции темы
Демо
Дата 6.4.2006, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



zalex,
Это можно сделать, но только зачем? За этими выкрутасами потеряется сам поток-))


--------------------
    
PM MAIL ICQ Skype   Вверх
Демо
Дата 6.4.2006, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



На скорую руку(наверняка красивее можно):

Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  public
  end;

  PThr=^TThr;
  TThr=class(TThread)
  private
    FThr: PThr;
  public
    procedure Execute; override;
    constructor Create(var P: PThr);
    destructor Destroy;override;
  end;

var
  Form1: TForm1;
  Thr: TThr;

implementation

{$R *.dfm}

{ TForm1 }


{ TThr }

constructor TThr.Create(var P: PThr);
begin
  inherited Create(True);
  FreeOnTerminate := True;
  FThr := P;
  Resume;
end;

destructor TThr.Destroy;
begin
  FThr^ := nil;
  inherited;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  P: PThr;
begin
  P := @Thr;
  Thr := TThr.Create(P);
end;

procedure TThr.Execute;
begin
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  if Thr=nil then ShowMessage('nil');
end;

end.






--------------------
    
PM MAIL ICQ Skype   Вверх
zalex
Дата 6.4.2006, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 13.5.2005

Репутация: 2
Всего: 2



ПОБЕДИЛ!
Итак, вводим поле в TMyThread

Код

Pntr:^TThread;


При создании экземпляра класса TMyThread делаем так

Код

MyThrd:=TMyThrd.Create(True);
MyThrd.Pntr:=Addr(MyThrd);


А деструктор класса TMyThread переписываем след образом

Код

destructor TMyThread.Destroy;
begin
Self.P^:=Nil;
inherited Destroy;
{вот тут вопрос!!!! что вперед использовать?}

Добавлено @ 20:40
Цитата(Демо @ 6.4.2006, 20:16 Найти цитируемый пост)
Это можно сделать, но только зачем? За этими выкрутасами потеряется сам поток-))

Что бы потом не ломать голову на главном модуле, т.е. всю черновую засунуть в поток, а вокруг всё белое, и пушистое.
PM MAIL   Вверх
zalex
Дата 6.4.2006, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 13.5.2005

Репутация: 2
Всего: 2



неа, всё таки неймётся smile
Дестркутор переписал я так

Код

   destructor TMyThread.Destroy;
   var
   intPntr:^TThread;
   begin
   intPntr:=addr(Self.P^);
   inherited Destroy;
   intPntr^:=Nil;
   end;




Теперь по идее происходит и вызов переписанного Destroy, и только потом указателю на экземпляр класса присваивается значение nil.
Что скажите?

Это сообщение отредактировал(а) zalex - 6.4.2006, 20:56
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0437 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.