0

我有一个需要销毁的动态创建的表单:

  • 稍后(在应用程序关闭时)如果AssignData成功,或者
  • 立即以防AssignData崩溃。

由于表单归应用程序所有,因此仅调用它是不安全的FreeAndNil。但Close也行不通;它不会关闭窗口。

FrmLoader:= TFrmLoader.Create(Application);  <----- Application is the Owner                            
TRY
  FrmLoader.AssignData(FileData);                                      
EXCEPT                                                              
  FreeAndNil(FrmLoader);  // <------ unsafe                                            
  FrmLoader.Close;        // <------ this is the safe method to close it but won't work
  RAISE;       
END;
FrmLoader.DoStuff;
4

1 回答 1

3

调用Free拥有的表单是完全安全的。或将表格传递给FreeAndNil. 这是处理表单的正确方法。

因此,此代码可以满足您的需要。

FrmLoader:= TFrmLoader.Create(Application);
TRY
  FrmLoader.AssignData(FileData);                                      
EXCEPT                                                              
  FreeAndNil(FrmLoader);
  RAISE;       
END;
于 2012-10-02T14:57:54.953 回答