我有装入数据的表单的方法,有些数据可能需要很长时间才能加载。数据的这一部分是可选的,并且这数据被加载之前的形式可以被关闭:确定该表单是否有效
procedure TForm1.LoadData(Sender: TObject);
begin
// Load and add data to the form
...
TThread.CreateAnonymousThread(procedure
begin
// Long data loading
...
TThread.Synchronize(nil, procedure
begin
// Add data to the form
...
end);
end).Start;
end;
而问题:这是确定形式最好的方法是活着(未封闭的),用于FMX以避免异常时从数据应该添加线程?长时间加载我的意思是不是几小时或十分钟,这可能会长达一分钟。
更新:关闭窗体后,我不再需要额外的数据,线程可以终止。这将以任何方式终止,但我必须毫无例外地这样做。目前,我有
TThread.Synchronize(nil, procedure
begin
// Add data to the form
try
...
except
end;
end);
,这是工作,但我搜索决策无一例外
没有任何意见,11个意见和-2票 - 这是非常简单的问题或错误的实现? –
不要让线程在运行时关闭表单。或者不要从线程访问表单(这意味着在没有调用Synchronize的情况下运行它)。你不能两面都有。如果你站在树上的树枝上,你无法控制锯子通过时发生的情况。 –