我有一个框,里面我有一个线程,创建在运行时这方面的和,每一次点击,让该按钮,它会创建一个新的框架,并可以在表单中有无数。问题是......我创建第一个,当我创建第二个,第一个线程到第二个时,线程开始正常,如果再次单击,第一个和第二个静止,第三个开始,如果我关闭第三个,第二个回到工作,因为这发生? 多线程德尔福停止
constructor TMy_Thread.Create(fraConnect : TfraConnect);
begin
inherited Create(True);
Priority := tpTimeCritical;
FreeOnTerminate := true;
fraConnectT := fraConnect;
end;
procedure TMy_Thread.Execute;
begin
Synchronize(Teste);
end;
procedure TMy_Thread.TEste;
var
iSize : Int64;
iCnt : Integer;
Msg : TMsg ;
begin
inherited;
with fraConnectT do begin
While not Terminated do begin
Log(fraConnectT.Name,'');
Application.ProcessMessages;
end;
end;
end;
////////////////
procedure TfraConnect.Click(Sender: TObject);
var
Sc : TMy_Thread;
begin
Sc := TMy_Thread.Create(Self);
try
iTela := 0;
Sc.Execute;
finally
Sc.Terminate;
end;
end;
这是很难理解你描述的问题,特别是因为我们看不到任何代码。你能提供一个样本来证明你的问题吗?另一方面,根据你的解释,这听起来像你需要一个线程池,但不知道上下文不能太确定。 –
请阅读你自己的问题,并问问你自己是否以一种可以让人回答的方式解释你的问题。 –
请显示一些实际的代码。这听起来像你的框架/线程试图访问一些在创建新的框架/线程时被锁定的东西,并在释放时解锁,从而阻止访问早期的框架/线程实例。很难说没有看到你真的在做什么。 –