• 🚨 24 часа до повышения цены на курс «Пентест Active Directory: от теории к практике» от Академии Кодебай

    🔍 Изучите реальные техники атак на инфраструктуру Active Directory: от первоначального доступа до полной компрометации.
    🛠️ Освойте инструменты, такие как BloodHound, Mimikatz, CrackMapExec и другие.
    🧪 Пройдите практические лабораторные работы, имитирующие реальные сценарии атак.
    🧠 Получите знания, которые помогут вам стать востребованным специалистом в области информационной безопасности.

    Последний день записи в текущий поток по старой цене Подробнее о курсе ...

Обращение к VCL в DoTerminate потока

  • Автор темы Автор темы Shouldercannon
  • Дата начала Дата начала
S

Shouldercannon

Можно ли в DoTerminate потока обращаться к VCL формы?
Код:
type

  TMy_Thread = class(TThread)
  private
    { Private declarations }
    s: String;
  protected
    procedure Execute; override;
    procedure DoTerminate; override;
  public
  end;
...
var
  Form2: TForm2;
  My_Thread: TMy_Thread;
...
procedure TForm2.PBBRefreshClick(Sender: TObject);
begin
  My_Thread := TMy_Thread.Create(True);
  My_Thread.FreeOnTerminate := True;
  My_Thread.Start;
end;

procedure TMy_Thread.Execute;
begin
  s := '1;2;3;4;5;';
  Terminate;
end;

procedure TMy_Thread.DoTerminate;
var
  Item: TListItem;
begin
  Form2.ListView1.SortType := stNone;
  Form2.ListView1.Items.BeginUpdate;
  Form2.ListView1.Items.Clear;

  while Pos(';', s) <> 0 do
  begin
    Item := Form2.ListView1.Items.Add;
    Item.Caption := Copy(s, 1, Pos(';', s) - 1);
    Delete(s, 1, Pos(';', s));
  end;

  Form2.ListView1.SortType := stBoth;
  Form2.ListView1.Items.EndUpdate;

// Form2.Show; // Нельзя. Code 1400. недопустимый дескриптор окна
end;
 
Последнее редактирование модератором:
DoTerminate это метод потока, и работает он в контексте потока а не в ГУИ потоке.
Поэтому обращаться к vcl в нем не безопасно. Отсюда все ваши беды.
И вообще этот метод служит для запуска обработчика события OnTerminate, если конечно его определил пользователь. И вот он уже работает именно в ГУИ потоке.
 
  • Нравится
Реакции: Shouldercannon
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Курс AD