Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2020, 10:18   #1
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию Как правильно передать class в поток

Здравствуйте. Подскажите как правильно передать class в поток.
У меня есть class
Код:
type
  TFirstClass = class
    fID : Integer;
    fNAME : string;
  end;
Есть поток
Код:
type
  TmyTheard = class(TThread)
    procedure Execute; override;
    procedure SetFirstClassToLabel;
    private
       fFirstClass : TFirstClass;
       TS : TStringList;
    public
      constructor Create(CreateSuspennded: Boolean; aFirstClass : TFirstClass);
  end;
я создаю class, передаю его в поток и затем освобождаю память
Код:
procedure TForm1.Button1Click(Sender: TObject);
  var
    FirstClass : TFirstClass;
Begin
  //Создаю
  FirstClass := TFirstClass.Create;
  FirstClass.fID := 1;
  FirstClass.fNAME := 'Привет мир!';
//Передаю в поток
  with TmyTheard.Create(True,FirstClass) do
    begin
      Priority := tpNormal;
      FreeOnTerminate := True;
      Resume;
    end;
//Освобождаю
  FirstClass.Free;
end;
Но в потке переменных этого класса уже не существует.
Подскажите как правильно в поток передать class?
tarakan1983 вне форума Ответить с цитированием
Старый 06.04.2020, 12:24   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

https://www.programmersforum.ru/showthread.php?t=325843
#2
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 06.04.2020, 12:40   #3
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
Спасибо за ответ. Я в принципе так и думал, но думал, что может есть какое-то "изящное" решение... при котором можно не дублировать ссылку на объект а пересоздать одной какой-то командой.
tarakan1983 вне форума Ответить с цитированием
Старый 06.04.2020, 13:35   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
что может есть какое-то "изящное" решение...
если объект нужен только в потоке, то и создавать и хранить и удалять его нужно там.
назвается личные (private) данные.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передать компонент в поток nibufep Общие вопросы Delphi 5 27.06.2016 16:41
Как передать данные в поток.. login10 C# (си шарп) 9 01.11.2014 15:08
Как передать структуру в поток при _beginthread Ksardas13 Общие вопросы C/C++ 2 10.03.2012 05:00
Как передать параметр в поток? Pack Общие вопросы Delphi 3 22.02.2012 12:09
Передать переменную в поток,туплю. larin1974 Помощь студентам 2 20.11.2009 05:25