Moh*_*eza -7 delphi multithreading delay
我有一个项目,主要Form是在我之后创建的Thread.但是这段代码无法正常工作:
type
TMyThread = class(TThread)
public
procedure Execute; override;
procedure doProc;
end; { type }
.
.
.
procedure TForm1.FormCreate(Sender: TObject);
var
thrd : TMyThread;
begin
thrd := TMyThread.Create(True);
thrd.Resume;
// Following code will cause the `Form` to show the time delay is about 5 seconds...
end;
.
.
.
procedure TMyThread.Execute;
begin
inherited;
doProc;
end;
procedure TMyThread.doProc;
var
AForm : TForm;
begin
AForm := TForm.Create(nil);
AForm.Caption := 'Thread Form';
AForm.Position := poScreenCenter;
AForm.FormStyle := fsStayOnTop;
AForm.Show;
end;
Run Code Online (Sandbox Code Playgroud)
我不想用Synchronize.有没有办法让我Thread离开主力Form?我希望Form在主要显示之前显示主要Form开始创建之前Form.
穆罕默德,我认为这是一个总体 [多线程] 误解的典型例子.
您尝试使用代码总是好的,但您必须学习基础知识.正如大卫所说,你违反了规则.整个概念.您可能会因为代码不起作用而感到沮丧,但由于您的挫败感,VCL 不会突然变得线程安全.
我的建议是RTFM.有一个很棒的.
Martin Harvey的一本书,多线程 - 德尔福之路.对于真正的极客来说,阅读既简单又有趣.您可能不想超越互斥体,关键部分和并发控制,但至少您将学习一些关于多线程惊人世界的重要概念.
请不要指望SO的任何人回答错误的问题.大多数响应者都是专业且经验丰富的程序员,他们不想浪费时间潜入最初错误的讨论.这里的人都很布尔;)
换句话说,在发布问题之前,尝试学习一些非常基本的东西.