我有以下课程
type TMyThread = class(TThread)
form: TForm;
procedure Execute; override;
constructor Create();
end;
procedure MyThread.Execute;
begin
inherited;
form.ShowModal;
end;
constructor MyThread.Create;
begin
inherited Create(true);
form := TForm.CreateNew(nil);
end;
然后我执行以下代码:
var
thread: TMyThread;
begin
thread := MyThread.Create;
thread.Resume; //I know its depracated
readln;
end;
我应该期望出现一个窗体窗口,但是什么也没有发生。调试时,我可以看到表单产生了一个新线程,但是我看不到它。我尝试给表单提供它需要的所有属性,但仍然一无所获。 Form.Show也不起作用。但是,当尝试以下操作时:
begin
thread.form := TForm.CreateNew(nil);
thread.form.ShowModal;
end.
将创建一个新表格,并按预期显示。为什么要在TThread中创建表单?因为我想让控制台和应用程序中的表单异步工作。尝试这样做有天生的错误吗?一种不涉及使用线程的简单方法?