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;
Последнее редактирование модератором: